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 wird dieser Prozess zunehmend mit Infrastruktur-as-Code (IaC) erreicht. 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 Back-End
Sowohl Terraform als auch Bicep sind die gewünschte Zustandskonfiguration (DSC), wodurch it- und entwicklungsinfrastruktur einfach als Code verwaltet werden kann. Terraform speichert Zustand über Ihre verwaltete 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.tfstate
gespeichert, kann aber auch remote gespeichert werden. Es ist wichtig, Ihre Statusdateien zu sichern und zu sichern. Wie Terraform ist Bicep deklarativ und Zielsuche. Bicep speichert jedoch keinen Zustand. Stattdessen basiert Bicep auf der inkrementellen Bereitstellung.
Infrastrukturziele
Beim Vergleich von Bicep mit Terraform für die Verwaltung der Cloudinfrastruktur ist es wichtig, Ihre Ziel-Cloudumgebung zu berücksichtigen:
- Nur Azure
- Multi- oder Hybridclouds
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
- Lokale Workloads
Terraform interagiert mit anderen Cloudanbietern oder APIs mit Plugins, die als Anbieter bezeichnet werden. Es gibt mehrere Terraform Azure-Anbieter , die die Verwaltung der Azure-Infrastruktur ermöglichen. Beim Codieren einer Terraform-Konfiguration 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-Tools
Befehlszeilenschnittstellen-Tools (CLI) spielen durch die Implementierung und Verwaltung der Automatisierungstechnologie eine schlüsselrolle Rolle bei der Orchestrierung. Sowohl Bicep als auch Terraform bieten CLI-Tools.
Bicep ist in Azure CLI integriert, sodass Entwickler Befehle wie az
:
az bicep
: Mit den Az bicep-Befehlen können Sie beispielsweise Bicep-Dateien installieren und Bicep-Dateien erstellen und veröffentlichen.az deployment
: Im Artikel "Bereitstellen von Ressourcen mit Bicep" und Azure CLI wird erläutert, wie Sie Azure CLI mit Bicep-Dateien verwenden, um Ihre Ressourcen in Azure bereitzustellen.
Mit der Terraform CLI können Sie aufgaben wie Validierung und Formatieren Ihres Terraform-Codes ausführen und einen Ausführungsplan erstellen und anwenden.
- Der Artikel Schnellstart: Erstellen einer Azure-Ressourcengruppe mit Terraform zeigt Ihnen, wie Sie mehrere der Terraform-Befehle verwenden, um eine Azure-Ressourcengruppe zu erstellen.
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 terraform und Bicep GitHub Actions , um Softwarebuilds, Tests und Bereitstellungen zu automatisieren.
In 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. Dieses Feature bietet Vorteile wie die Preflight-Verarbeitung, um die Richtlinie zu überprüfen oder die Verfügbarkeit für die Bereitstellung mehrerer Instanzen innerhalb einer Region. 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. Bei Bicep wird während der Anforderung ein Autorisierungstoken zum Übermitteln einer Bicep-Datei und einer ARM-Vorlage bereitgestellt. 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 mehrere Anbieteranmeldeinformationen in einer einzigen Konfiguration verwendet werden.
Azure-Integrationen
Sie sollten auch ihre Verwendung von Azure-Features wie Azure-Richtlinie und die Interaktion mit anderen Tools und Sprachen berücksichtigen. 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 mit Richtlinien mithilfe der bereitgestellten ARM-Vorlagen korrigieren. Die ARM-Vorlage kann verwendet werden, 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 die Azure-Portal verwenden, um Vorlagen zu exportieren. Durch das Exportieren einer Vorlage können Sie die Syntax und die Eigenschaften verstehen, die Ihre Ressourcen bereitstellen. 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, kann die vorhandene Azure-Infrastruktur unter terraform-Management unter Verwendung von Azure Export für Terraform übernommen werden. (Azure Export for Terraform ist ein Open-Source-Tool, das microsoft im Azure/aztfexport GitHub Repo enthält und Standard enthält.)
Out-of-Band-Änderungen
Out-of-Band-Konfigurationsänderungen sind Änderungen an einer Gerätekonfiguration außerhalb des Kontexts des Tools. Nehmen wir beispielsweise an, Sie stellen einen Vm Scale Set mit Bicep oder Terraform bereit. Wenn Sie diesen Skalierungssatz für virtuelle Computer mithilfe des Portals ändern, wäre die Änderung "out-of-band" und für Ihr IaC-Tool unbekannt.
Wenn Sie Bicep verwenden, sollten Out-of-Band-Änderungen mit Bicep und dem ARM-Vorlagencode in Einklang gebracht werden, um zu vermeiden, dass diese Änderungen bei der nächsten Bereitstellung überschrieben werden. Diese Änderungen blockieren die Bereitstellung nicht.
Wenn Sie Terraform verwenden, müssen Sie die Out-of-Band-Änderungen in den Terraform-Zustand importieren und die HCL aktualisieren.
Wenn also eine Umgebung häufige Out-of-Band-Änderungen erfordert, ist Bicep benutzerfreundlicher. Wenn Sie Terraform verwenden, sollten Sie Out-of-Band-Änderungen minimieren.
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 mit einer Portalerfahrung, die auf ARM-Vorlagen und der Implementierung der Zielzone basiert. Terraform nutzt ein Enterprise-Scale Landing Zones-Modul , um Azure bereitzustellen, zu verwalten und zu operationalisieren.
Zusammenfassung
Bicep und Terraform bieten viele benutzerfreundliche Infrastruktur- und Integrationsfunktionen. Diese Features erleichtern die Implementierung und Verwaltung der Automatisierungstechnologie. Bei der Entscheidung, welche für Ihre Umgebung am besten geeignet ist, ist es wichtig zu berücksichtigen, ob Sie in mehr als einer Cloud bereitstellen oder ob Ihre Infrastruktur aus einer Multi- oder Hybrid-Cloud-Umgebung besteht. Achten Sie außerdem darauf, die neun in diesem Artikel erläuterten Features zu berücksichtigen, um die beste Wahl für Ihre Organisation zu treffen.