21 Infrastructure as Code
Kompetenzen
- Ich kann Service-Konfigurationen codebasiert in Containern bereitstellen und mit Infrastructure-as-Code* (IaC) dokumentieren
- Ich kann das Versionsverwaltungssystem GIT zur Verwaltung und Erstellung von versioniertem, kommentierten Code anwenden
- Ich kann Sicherheitsanforderungen umsetzen und auf ihre Wirksamkeit prüfen
Einleitung
Erinnern Sie sich zurück an die vorhergehenden Aufgaben, in denen Sie anhand von Textdateien gewisse Prozesse automatisiert haben:
-
Spring Boot Build Prozess mit
pom.xmlDie
pom.xml-Datei enthält die Konfiguration für das Maven-Projekt und definiert die Build-Phasen, Abhängigkeiten und Plugins, die für das Erstellen und Verwalten des Projekts benötigt werden. Hier ein Auszug aus der Datei aus dem Repository m347-ref-card-01<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>ch.bbw</groupId> <artifactId>app-refcard-01</artifactId>Stellen Sie sich vor, Sie müssten Maven für jeden Build eigenhändig mit den nötigen Befehlen ausstatten:
maven compile --modelVersion=4.0.0 --group-id=ch.bbw --artifactId=app-refcard-01. Das wäre mühselig und fehleranfällig. Die Umsetzung mit einerpom.xmlermöglicht den universalen Einsatz vonmvn package, alles andere wird von Maven direkt auspom.xmlausgelesen. -
Docker Build Prozess mit
DockerfileÄhnlich funktioniert auch Docker. Anstatt einer langen Abfolge von vielen Befehlen im Stil von
können wir alle Anweisungen in einem
DockerfileabbildenDer Befehl
docker build .führt alle Anweisungen selbstständig durch.
Was ist Infrastructure as Code?
Wir übernehmen die Praktiken aus der Softwareentwicklung und behandeln Infrastruktur und Tools wie Software-Sourcecode und Daten. Wir definieren deshalb unsere Infrastruktur und deren Konfiguration nur noch in Code und automatisieren wiederholbare Abläufe für die Bereitstellung und Änderung von Systemen und deren Konfigurationen.
Dieser Ansatz von Infrastructure as Code erlaubt uns zudem, moderne Entwicklungstools und Praktiken zu verwenden:
- Versionskontrolle mit Git
- Test-getriebene Entwicklung (test-driven development TDD)
- Kontinuierliche Integration (continuous integration CI)
- Kontinuierliche Bereitstellung (continuous delivery CD)