Terraform ermöglicht die Bereitstellung von Infrastruktur auf der Azure DevOps Pipeline. Erfahre alles, was du über diese Alternative zum Azure Ressource Manager wissen musst, und was die Stärken dieser Lösung sind!
Jeder Cloud-Anbieter hat seine eigene Methode zur Bereitstellung der Infrastruktur. Microsoft Azure verwendet zum Beispiel die Konfigurationssprache JSON, während AWS und die Google Cloud Platform YAML verwenden.
In einer Zeit, in der Unternehmen mehrere Cloud-Plattformen nutzen, können diese cloud-spezifischen Besonderheiten eine Belastung darstellen. Glücklicherweise löst Hashicorp dieses Problem mit Terraform.
Diese Open-Source-Infrastruktur-als-Code-Software (IaC) ermöglicht die Einrichtung und Verwaltung von Infrastrukturen in allen großen öffentlichen Clouds wie AWS, Azure, Google Cloud Platform, Oracle Cloud, VMware vSphere oder Alibaba.
Die Konfiguration der Infrastruktur erfolgt mit der Hashicorp Configuration Language (HCL). Die Nutzer müssen also nur eine einzige Sprache für alle öffentlichen Clouds lernen. Sie müssen nur den gewünschten Zustand der Infrastruktur in einer Konfigurationsdatei beschreiben, und Terraform erledigt den Rest. So können mit dieser Software sehr einfach IT-Ressourcen erstellt, geändert und gelöscht werden.
Wie kann man mit Terraform Ressourcen auf Azure DevOps bereitstellen?
Um Ressourcen auf Azure DevOps Pipelines mit Terraform einzusetzen, benötigst du ein Microsoft Azure-Konto mit Azure DevOps. Lade Terraform herunter und installiere es auf dem Rechner, auf dem die Azure DevOps Pipelines laufen sollen, oder verwende ein mit Terraform vorkonfiguriertes Image einer virtuellen Maschine.
Dann musst du ein Projekt auf Azure DevOps erstellen und einen Ordner in den Repositories anlegen, um die Terraform-Datei für die Bereitstellung von Ressourcen hochzuladen. Dabei handelt es sich um die Datei, die den gewünschten Zustand der Infrastruktur beschreibt. Anschließend musst du eine neue Relax-Pipeline erstellen und die Terraform-Datei als Artefakt aus dem Azure-Repository hinzufügen.
Der nächste Schritt ist das Hinzufügen der Terraform-Laufzeit-Build-Schritte Init, Plan und Apply. Mit dem Befehl Init wird die Infrastruktur initialisiert, mit dem Befehl Plan werden die Änderungen an der Infrastruktur und die Aktionen geplant, die nötig sind, um den gewünschten Zustand zu erreichen, und mit dem Befehl Apply werden diese Änderungen angewendet.
Am besten speicherst du die Terraform-Konfigurationsdatei in einem Git-Repository. Du musst dann die Azure DevOps Pipeline so konfigurieren, dass sie dieses Git-Repository verwendet. So können Änderungen an der Infrastruktur zentral verfolgt werden. Du kannst auch mit einem Team gemeinsam an der Konfiguration der Infrastruktur arbeiten.
Auf der anderen Seite solltest du es vermeiden, sensible Informationen wie Zugangsdaten und Passwörter in die Terraform-Konfigurationsdatei aufzunehmen. Es ist besser, in Azure DevOps Umgebungsvariablen einzurichten, um sie zu schützen.
Terraform vs Azure Ressource Manager
Für die Konfiguration der Infrastruktur in der Microsoft Azure Cloud kann Terraform als Alternative zum Azure Ressource Manager verwendet werden, der standardmäßig auf der Plattform angeboten wird. Diese beiden Tools weisen einige Unterschiede auf.
Zunächst einmal verwendet Terraform die HCL-Sprache, während der Azure Ressource Manager für die Infrastrukturdefinition auf JSON setzt. Bei Terraform wird die Abhängigkeit zwischen Ressourcen automatisch festgelegt, während sie bei ARM-Templates explizit angegeben werden muss.
Darüber hinaus verwendet Terraform Variablen und die Azure Ressource Manager Templates Parameter. In beiden Fällen handelt es sich um Werte, die vom Benutzer für den Einsatz eingegeben und als separate Datei definiert werden.
Die innerhalb des Templates definierten Werte werden auf Terraform als lokale Variablen und auf ARM als Variablen bezeichnet. Für den Einsatz einer bestimmten Ressource verwendet Terraform Module und Azure verschachtelte Templates.
Tipps und Best Practices
Tipps und bewährte Praktiken Zunächst einmal solltest du zum Erstellen neuer Pipelines YAML anstelle von klassischen Pipelines verwenden.
Andererseits ist es besser, die Eingabeaufforderung als YAML-Aufgaben zu verwenden. Dies wird dir helfen, die Funktionsweise von Terraform besser zu verstehen. Achte außerdem darauf, die neueste Version von Terraform zu verwenden.
In der Dokumentation von Terraform wird außerdem empfohlen, die Teilkonfiguration zu verwenden und zur Authentifizierung einen Service Principal oder eine Managed Service Identity zu verwenden. Dieser zweite Punkt bezieht sich auf die nicht-interaktive Ausführung von Terraform, z. B. auf einem CI-Server. Bei einer lokalen Ausführung hingegen kannst du das Azure CLI verwenden.
Achte darauf, dass du die Pipeline-Variablen als Geheimnisse aufbewahrst, damit sie verschlüsselt sind. Wenn du noch weiter gehen willst, kannst du den Azure Key Vault Service für noch mehr Sicherheit und die Fähigkeit, Geheimnisse wiederzuverwenden, nutzen.
Erstelle schließlich eine benutzerdefinierte Rolle für den von Terraform verwendeten Dienstprinzipal. Dies vereinfacht die Konfiguration von Berechtigungen wie der Zugriffsrichtlinie für den Key Vault, ohne dass du dem Service Principal die Berechtigungen der Eigentümerrolle geben musst. Insbesondere ist es wichtig, dass du Terraform nicht die Erlaubnis gibst, Infrastrukturen zu löschen, um die Datenschutzbestimmungen einzuhalten.
Wie meistert man Terraform und Azure DevOps?
Um Terraform, Azure und all die besten DevOps-Tools zu beherrschen, kannst du dich für die DataScientest-Ausbildungen entscheiden. In unserem Data-Engineer-Kurs lernst du die besten Praktiken und den Umgang mit Software und Lösungen.
In den verschiedenen Modulen lernst du unter anderem Python-Programmierung, CI/CD mit Git, Datenbanken und Big Data, Machine Learning und die Automatisierung und Bereitstellung mit Docker und Kubernetes kennen.
Alle unsere Kurse werden komplett als Fernkurs, BootCamp oder Weiterbildung durchgeführt. Am Ende des Kurses verfügst du über alle Kompetenzen, die du als Data Engineer benötigst, und erhältst eine Zertifizierung von Mines ParisTech PSL Executive Education. Du kannst auch Block 3 der RNCP-Zertifizierung 36129 „Projektleiter für künstliche Intelligenz“ validieren und dich auf die Microsoft-Zertifizierung AZ-900 vorbereiten.
Bezüglich der Finanzierung ist zu erwähnen, dass unsere Weiterbildung für die Finanzierung durch den Bildungsgutschein in Frage kommt. Entdecke DataScientest jetzt!