Ich bin jetzt seit über einem Jahr als Berater tätig. Und ich habe festgestellt, dass viele unserer Kunden nach Erfahrungen mit
Als ich anfing, mich mit Terraform zu beschäftigen, hatte ich es nie benutzt. Was ich hatte, waren umfangreiche Kenntnisse über AWS. Und wie bei jeder anderen Infrastruktur als Code. Sie müssen den Cloud-Anbieter kennen, um die richtige Infrastruktur aufzubauen. Tools wie Terraform, CloudFormation und CDK sind Tools zum Aufbau einer Infrastruktur. Diese können erlernt werden und Sie können je nach Projektbedarf zwischen ihnen wechseln.
Terraform Einführung
Also wandte ich mich zunächst an meine Kollegen Dean Shanahan und Bruno Schaatsbergen. Sie erklärten mir die Grundlagen, wie Terraform funktioniert. Lassen Sie mich das für Sie in einer kurzen und einfachen Geschichte rekapitulieren:
In Terraform deklarieren Sie Ihre Infrastruktur. Die Deklarationen werden in API-Aufrufe an den Cloud-Anbieter übersetzt. Wenn Sie also wissen, wie Sie die Infrastruktur in Ihrem Cloud-Anbieter aufbauen. Sie wissen, was in Terraform benötigt wird, Sie müssen nur die Syntax nachschlagen.
Was ist also der Unterschied zwischen Terraform und CloudFormation? Wenn Sie die eigentliche DSL (Domain Specific Language) entfernen. Dann besteht der einzige Unterschied darin, dass CloudFormation den Status für Sie verwaltet. In Terraform hingegen wird der Status von Terraform verwaltet. Das bedeutet, dass Sie dafür verantwortlich sind, ihn irgendwo zu speichern.
Was ist also dieser Staat, den ich erwähnt habe?
Stellen Sie sich vor, Sie möchten einen S3-Bucket erstellen. Wenn Sie dies über die AWS-Konsole tun, folgen Sie dem Assistenten. Die Konsole verwendet den CreateBucket API-Aufruf, um den Bucket zu erstellen. Wenn Sie einen Bucket mit CloudFormation erstellen. Sie übergeben eine Vorlage an den CloudFormation Service. Der Dienst liest die Vorlage. Er prüft, ob der Bucket, den wir hinzugefügt haben, bereits in der aktuellen Version enthalten ist. Da wir ihn hinzugefügt haben, ist dies nicht der Fall, so dass CloudFormation jetzt weiß, dass es einen CreateBucket ausführen muss. Diese Abfrage wird anhand des Status durchgeführt.
Das gleiche Prinzip gilt für Terraform. Wenn Sie eine Ressource hinzufügen, die im Status nicht bekannt ist, wird sie erstellt. Wenn die Ressource im Status bekannt ist, wird sie aktualisiert.
Wenn Sie nur mit Terraform herumspielen, können Sie den Status in einer lokalen Datei haben. Aber wenn Sie mit Teams und Pipelines zu tun haben, möchten Sie Ihren Status an einem zentralen Ort speichern. Dies können Sie mit einem S3-Bucket und einer DynamoDB-Tabelle erreichen. Der S3-Bucket enthält die Statusdatei. Die DynamoDB-Tabelle wird für das State Locking verwendet. Die Statussperre verhindert, dass 2 Bereitstellungen gleichzeitig stattfinden.
Terraform lernen
Ich habe die Prüfungsvorbereitung für die Terraform Associate-Zertifizierung auf Cloud Academy verfolgt. Aber HashiCorp Certified Terraform Associate von A Cloud Guru funktioniert auch. Oder Sie können einfach die Dokumentation lesen.
Innerhalb von ein paar Stunden war ich bereits so weit, dass ich behaupten konnte. Ich kenne Terraform! Es gibt so viele Anbieter, dass niemand sie alle kennt. Sie sollten sie nicht auswendig lernen, denn die Anbieter erhalten Updates. Es ist also immer besser, sich auf die Dokumentation zu verlassen als auf Ihr Gedächtnis.
Wenn Sie in ein bestehendes Team einsteigen, müssen Sie lernen, was dieses Team eigentlich baut. Sobald Sie das wissen, können Sie sich ansehen, wie sie das in Terraform gemacht haben.
Terraform verwenden
Eine Sache, die mir bei Terraform sehr gut gefallen hat. Sie können bei der Erstellung von Ressourcen Pre- und Post-Aktionen durchführen. Das ist sehr nützlich, wenn Sie zum Beispiel eine
Aber auch, wenn Sie Ressourcen löschen. Zum Beispiel, wenn Sie einen S3 Bucket löschen. Der Bucket muss leer sein. Mit Terraform können Sie zunächst alle Objekte entfernen und dann Terraform den Bucket löschen lassen.
Terraform verfügt auch über eine native Drift-Erkennung. Zum Beispiel, wenn Sie über die Konsole Tags zu einer Ressource hinzufügen. Und wenn Sie mit Terraform ein Update bereitstellen, erhalten Sie eine Benachrichtigung, dass dieses Tag entfernt wird.
Allerdings verwende ich für meine Einsätze normalerweise CodePipeline. CodePipeline hat eine gute Integration mit CloudFormation. Wenn Sie Ihren Terraform-Code in einer CodePipeline bereitstellen möchten. Sie müssen CodeBuild verwenden, um die Terraform-Bereitstellung durchzuführen. Und es ist etwas zusätzliche Arbeit erforderlich, um den Status richtig zu verwalten.
Fazit
CloudFormation und Terraform sind wirklich vergleichbare Produkte in dem, was sie tun. Wenn Sie wissen, wie Sie Ihre Infrastruktur bei Ihrem Cloud-Anbieter aufbauen. Das Erlernen von Terraform und/oder CloudFormation ist einfach. Sie müssen nur angeben, was Sie aufbauen möchten.
Je mehr Sie es benutzen, desto einfacher wird es, weil Sie Erfahrung mit dem Werkzeug sammeln. Aber letzten Endes ist es nur ein Tool und wenn ein besseres auftaucht. Sie können einfach wechseln, weil Sie den zugrunde liegenden Cloud-Anbieter kennen.
Foto von Pixabay
Verfasst von

Joris Conijn
Joris is the AWS Practise CTO of the Xebia Cloud service line and has been working with the AWS cloud since 2009 and focussing on building event-driven architectures. While working with the cloud from (almost) the start, he has seen most of the services being launched. Joris strongly believes in automation and infrastructure as code and is open to learning new things and experimenting with them because that is the way to learn and grow.
Unsere Ideen
Weitere Blogs
Contact




