Freigeben über


Was ist Infrastruktur als Code (IaC)?

Infrastruktur als Code (IaC) verwendet DevOps-Methodik und -Versionsverwaltung mit einem beschreibenden Modell, um Infrastruktur zu definieren und bereitzustellen, z. B. Netzwerke, virtuelle Computer, Lastenausgleichs- und Verbindungstopologien. Genauso wie derselbe Quellcode immer dieselbe Binärdatei generiert, generiert ein IaC-Modell bei jeder Bereitstellung dieselbe Umgebung.

Diagramm der Infrastruktur als Code, der die Umgebung in einer versionsierten Datei definiert.

IaC ist eine wichtige DevOps-Praxis und eine Komponente der kontinuierlichen Bereitstellung. Mit IaC können DevOps-Teams mit einer einheitlichen Reihe von Methoden und Tools zusammenarbeiten, um Anwendungen und deren unterstützende Infrastruktur schnell und zuverlässig in großem Umfang bereitzustellen.

Vermeiden Sie manuelle Konfigurationen, um Konsistenz zu gewährleisten.

IaC wurde entwickelt, um das Problem der Umgebungsabweichung in Release-Pipelines zu lösen. Ohne IaC müssen Teams die Bereitstellungsumgebung-Einstellungen einzeln verwalten. Im Laufe der Zeit wird jede Umgebung zu einem "Schneeflocken", einer einzigartigen Konfiguration, die nicht automatisch reproduziert werden kann. Inkonsistenzen zwischen Umgebungen können zu Bereitstellungsproblemen führen. Infrastrukturverwaltung und -wartung umfassen manuelle Prozesse, die fehleranfällig und schwer zu verfolgen sind.

IaC vermeidet manuelle Konfiguration und erzwingt Konsistenz durch Darstellung der gewünschten Umgebungszustände über gut dokumentierten Code in Formaten wie JSON. Infrastrukturbereitstellungen mit IaC sind wiederholbar und verhindern Laufzeitprobleme, die durch Konfigurationsabweichungen oder fehlende Abhängigkeiten verursacht werden. Releasepipelines führen die Umgebungsbeschreibungen und Versionskonfigurationsmodelle aus, um Zielumgebungen zu konfigurieren. Um Änderungen vorzunehmen, bearbeitet das Team die Quelle, nicht das Ziel.

Idempotenz, die Fähigkeit einer bestimmten Operation, immer das gleiche Ergebnis zu erzeugen, ist ein wichtiges IaC-Prinzip. Ein Bereitstellungsbefehl legt die Zielumgebung unabhängig vom Startzustand der Umgebung immer auf dieselbe Konfiguration fest. Idempotenz wird erreicht, indem entweder das vorhandene Ziel automatisch konfiguriert wird oder indem das vorhandene Ziel verworfen und eine neue Umgebung erstellt wird.

Hilfreiche Tools

Schnelle und großmaßstäbliche Bereitstellung stabiler Testumgebungen

IaC hilft DevOps-Teams, Anwendungen in produktionsähnlichen Umgebungen frühzeitig im Entwicklungszyklus zu testen. Teams können mehrere Testumgebungen zuverlässig auf Abruf bereitstellen. Die Cloud stellt Umgebungen auf der Grundlage von IaC-Definitionen dynamisch bereit und baut sie wieder ab. Der Infrastrukturcode selbst kann überprüft und getestet werden, um häufige Bereitstellungsprobleme zu vermeiden.

Deklarative Definitionsdateien verwenden

IaC sollte deklarative Definitionsdateien verwenden, wenn möglich. Eine Definitionsdatei beschreibt die Komponenten und Konfigurationen, die eine Umgebung erfordert, aber nicht unbedingt, wie diese Konfiguration erreicht werden kann. Die Datei kann z. B. eine erforderliche Serverversion und -konfiguration definieren, aber nicht den Serverinstallations- und Konfigurationsprozess angeben. Diese Abstraktion ermöglicht eine höhere Flexibilität bei der Verwendung optimierter Techniken, die der Infrastrukturanbieter bereitstellt. Deklarative Definitionen tragen auch dazu bei, die technische Verschuldung bei der Pflege von imperativem Code wie Bereitstellungsskripten zu verringern, die im Laufe der Zeit anfallen können.

Es gibt keine Standardsyntax für deklaratives IaC. Die Syntax für die Beschreibung von IaC hängt in der Regel von den Anforderungen der Zielplattform ab. Verschiedene Plattformen unterstützen Dateiformate wie YAML, JSON und XML.

Bereitstellen von IaC in Azure

Azure bietet native Unterstützung für IaC über das Azure Resource Manager-Modell. Teams können deklarative ARM-Vorlagen mithilfe von JSON-Syntax oder Bicep- definieren, um die für die Bereitstellung von Lösungen erforderliche Infrastruktur anzugeben. Drittanbieterlösungen wie Terraform sind über bestimmte Azure-Anbieter ebenfalls verfügbar.