Vergleich zwischen Terraform und Bicep

Um eine Skalierung zu erzielen, suchen DevOps-Teams immer nach Möglichkeiten, Code schnell mit einem vertrauenswürdigen und wiederholbaren Prozess bereitzustellen. In Bezug auf die Cloud und Infrastruktur können Sie diesen Prozess zunehmend mit Infrastruktur als Code (IaC) erledigen. IaC-Tools reichen von allgemeinen Tools bis hin zu Tools, die für bestimmte Umgebungen vorgesehen sind. Terraform ist ein Beispiel für den früheren, während Bicep entwickelt wurde, um Azure-bezogene Aufgaben zu verarbeiten.

In diesem Artikel vergleichen wir neun Infrastruktur- und Integrationsfunktionen von Bicep und Terraform. Wenn Sie diese Unterschiede verstehen, können Sie entscheiden, welches Tool Ihre Infrastruktur und Prozesse am besten unterstützt.

Status und Backend

Sowohl Terraform als auch Bicep sind gewünschte Zustandskonfigurationen (DSC), wodurch IT- und Entwicklungsinfrastrukturen einfach als Code verwaltet werden können. Terraform speichert Zustandsdaten von Ihrer verwalteten Infrastruktur und Konfiguration. Terraform verwendet diese Informationen, um Ihrer Konfiguration reale Ressourcen zuzuordnen, Metadaten nachzuverfolgen und die Leistung größerer Infrastrukturen zu verbessern. Der Zustand wird in einer lokalen Datei namens terraform.tfstategespeichert, Sie können ihn aber auch remote speichern. Es ist wichtig, Ihre Statusdateien zu speichern und zu sichern. Wie Terraform ist Bicep deklarativ und zielgerichtet. Bicep speichert jedoch keinen Zustand. Stattdessen verlässt sich Bicep auf eine inkrementelle Bereitstellung.

Infrastrukturziele

Berücksichtigen Sie beim Vergleich Bicep mit Terraform für die Verwaltung der Cloudinfrastruktur Ihre Ziel-Cloudumgebung:

  • Nur Azure
  • Multi-Cloud- oder Hybrid-Cloud-Umgebungen

Bicep ist Azure-spezifisch und nicht für die Arbeit mit anderen Clouddiensten konzipiert.

Wenn Ihr Ziel darin besteht, Bereitstellungen für eine der folgenden Umgebungen zu automatisieren, ist Terraform wahrscheinlich die bessere Option:

  • Virtualisierungsumgebungen
  • Multicloud-Szenarien – z. B. Azure und andere Clouds
  • On-premises Workloads

Terraform interagiert mit anderen Cloudanbietern oder APIs mithilfe von Plugins, die als Anbieter bezeichnet werden. Mehrere Terraform Azure Anbieter ermöglichen die Verwaltung Azure Infrastruktur. Wenn Sie eine Terraform-Konfiguration codieren, geben Sie die erforderlichen Anbieter an, die Sie verwenden. Wenn Sie terraform init ausführen, wird der angegebene Anbieter installiert und kann aus Ihrem Code verwendet werden.

CLI-Werkzeuge

Befehlszeilenschnittstellen-Tools (CLI) spielen durch die Implementierung und Verwaltung der Automatisierungstechnologie eine Schlüsselrolle bei der Orchestrierung. Sowohl Bicep als auch Terraform bieten CLI-Tools.

Bicep ist in Azure CLI integriert, sodass Entwickler Befehle wie az verwenden können.

Die Terraform CLI ermöglicht Es Ihnen, aufgaben wie das Überprüfen und Formatieren Ihres Terraform-Codes sowie das Erstellen und Anwenden eines Ausführungsplans auszuführen.

Bicep bietet auch ein Feature, das die Integration von Bicep in Azure-Pipelines erleichtert. Es gibt ein ähnliches Feature für Terraform, aber Sie müssen die Erweiterung Azure Pipelines Terraform Tasks für Visual Studio herunterladen und installieren. Nach der Installation können Sie Terraform CLI-Befehle aus Azure Pipelines ausführen. Darüber hinaus unterstützen sowohl Terraform als auch Bicep GitHub Actions, um Software-Builds, Tests und Bereitstellungen zu automatisieren.

Verarbeitung

Es gibt einige wichtige Unterschiede zwischen Bicep und Terraform hinsichtlich der Effizienz und Optimierung von Bereitstellungen. Bei Bicep erfolgt die Verarbeitung innerhalb der zentralen Azure-Infrastrukturdienstseite. Diese Funktion bietet Vorteile wie z. B. die Preflight-Verarbeitung zur Überprüfung von Richtlinien oder die Möglichkeit, mehrere Instanzen innerhalb einer Region bereitzustellen. Mit Terraform erfolgt die Verarbeitung im Terraform-Client. Daher umfasst die Vorverarbeitung keine Aufrufe an Azure, da sie Den Zustand und HCL (HashiCorp Language) verwendet, um die erforderlichen Änderungen zu bestimmen.

Authentifizierung

Die Azure-Authentifizierungsfeatures variieren zwischen Bicep und Terraform. Mit Bicep geben Sie während der Anforderung ein Autorisierungstoken an, um eine Bicep Datei und ARM-Vorlage zu übermitteln. ARM stellt sicher, dass Sie über die Berechtigung zum Erstellen der Bereitstellung und zum Bereitstellen von Ressourcen innerhalb der angegebenen Vorlage verfügen. Terraform authentifiziert jede API basierend auf Anbieteranmeldeinformationen – z. B. Azure CLI, Dienstprinzipal oder verwaltete Identitäten für Azure-Ressourcen. Darüber hinaus können Sie mehrere Anbieteranmeldeinformationen in einer einzigen Konfiguration verwenden.

Azure-Integrationen

Überlegen Sie sich, wie Sie Azure Features wie Azure Policy verwenden und wie jedes Tool mit anderen Tools und Sprachen interagiert. Die Preflight-Überprüfung von Bicep bestimmt, ob eine Ressource nicht einer Richtlinie entspricht, sodass sie vor einer Bereitstellung fehlschlägt. Daher können Entwickler Ressourcen per Richtlinie mithilfe der bereitgestellten ARM-Vorlagen anpassen. Sie können die ARM-Vorlage verwenden, um eine Richtlinienzuweisung zu einer anderen Ressource für die automatisierte Wartung zu erstellen. Terraform schlägt jedoch fehl, wenn eine Ressource bereitgestellt wird, die aufgrund der Politik unzulässig ist.

Portalintegration

Ein großer Vorteil, dass Bicep über Terraform verfügt, ist die Möglichkeit, Portalaktionen zu automatisieren. Mit Bicep können Sie das Azure-Portal verwenden, um Vorlagen zu exportieren. Durch den Export einer Vorlage können Sie die Syntax und die Eigenschaften verstehen, mit denen Ihre Ressourcen bereitgestellt werden. Sie können zukünftige Bereitstellungen automatisieren, indem Sie mit der exportierten Vorlage beginnen und sie entsprechend Ihren Anforderungen ändern. Bis Terraform-Vorlagen unterstützt werden, müssen Sie die exportierte Vorlage manuell übersetzen.

Obwohl Terraform nicht die gleichen Portalintegrationen wie Bicep bietet, können Sie vorhandene Azure Infrastruktur unter Terraform-Management nutzen, indem Sie Azure Export für Terraform verwenden. (Azure Export for Terraform ist ein Open-Source-Tool, das im Besitz von Microsoft ist und im Azure/aztfexport GitHub-Repository verwaltet wird.)

Out-of-Band-Änderungen

Out-of-Band-Konfigurationsänderungen sind Änderungen, die Sie an einer Gerätekonfiguration außerhalb des Kontexts des Tools vornehmen. Nehmen wir zum Beispiel an, Sie stellen ein Virtual Machine Scale Set mithilfe von Bicep oder Terraform bereit. Wenn Sie diesen Skalierungssatz für virtuelle Computer mithilfe des Portals ändern, ist die Änderung "out-of-band" und für Ihr IaC-Tool unbekannt.

Wenn Sie Bicep verwenden, stimmen Sie Out-of-Band-Änderungen mit Bicep und dem ARM-Vorlagencode ab, um zu vermeiden, dass diese Änderungen bei der nächsten Bereitstellung überschrieben werden. Diese Änderungen blockieren die Bereitstellung nicht.

Wenn Sie Terraform verwenden, importieren Sie die Out-of-Band-Änderungen in den Terraform-Zustand und aktualisieren Sie die HCL.

Note

Azure Storage Kontokonvertierungen können unterstützte Out-of-Band-Änderungen einführen, die dazu führen, dass Terraform einen Ersatz für ein Speicherkonto plant. Anleitungen zum Verhindern unerwarteter Neuerstellungen während dieser Konvertierungen finden Sie unter Verhindern von Terraform-Drift für zustandsbehaftete Azure-Ressourcen.

Wenn also eine Umgebung häufige Out-of-Band-Änderungen erfordert, ist Bicep benutzerfreundlicher. Wenn Sie Terraform verwenden, minimieren Sie Out-of-Band-Änderungen.

Cloud-Frameworks

Das Cloud Adoption Framework (CAF) ist eine Sammlung von Dokumentationen, bewährten Methoden und Tools, um die Cloudakzeptanz während Ihrer gesamten Cloud-Reise zu beschleunigen. Azure bietet native Dienste für die Bereitstellung von Landungszonen. Bicep vereinfacht diesen Prozess durch eine Portalerfahrung, die auf ARM-Vorlagen und der Implementierung einer Landing Zone basiert. Terraform verwendet ein Enterprise-Scale Landing Zones-Modul, um Bereitstellungs-, Verwaltungs- und Betriebsprozesse mit Azure durchzuführen.

Zusammenfassung

Bicep und Terraform bieten viele benutzerfreundliche Infrastruktur- und Integrationsfunktionen. Diese Features erleichtern die Implementierung und Verwaltung der Automatisierungstechnologie. Überlegen Sie bei der Entscheidung, welches Tool für Ihre Umgebung am besten geeignet ist, ob Sie in mehr als einer Cloud bereitstellen oder ob Ihre Infrastruktur aus einer Multi-Cloud- oder Hybrid-Cloud-Umgebung besteht. Berücksichtigen Sie außerdem die neun in diesem Artikel erläuterten Features, um die beste Wahl für Ihre Organisation zu treffen.