IaC CI mit GitLab und Terraform

Blog

Heutzutage gibt es viele Möglichkeiten, Ihre Infrastruktur als Code (IaC) zu beschreiben und tatsächlich bereitzustellen – hier werfen wir einen Blick darauf, wie Sie mit dem immer beliebter werdenden Terraform-Tool eine schnelle und schmutzige Continuous Integration (CI) einrichten, um IaC zu starten und Gitlab als Quellcodeverwaltungs- und CI-Plattform.

Wie funktioniert es? Im Idealfall bearbeiten Sie Ihre Terraform-Ressourcendateien einfach mit Ihrem bevorzugten Editor (MS Word nicht zulässig), übertragen das Repo über git an Gitlab und die CI-Pipeline von GitLab nimmt die erforderlichen Änderungen direkt an Ihrer Infrastruktur vor. Es gibt ein paar Komponenten dazu:

  • Ihre lokalen Git- und Terraform-Tools zur Verwaltung des Repositorys und des Codes
  • Gitlab-Instanz für Quell- und CI-Jobsteuerung/Trigger
  • Eine Maschine, auf der der Gitlab CI-Agent (Gitlab-Runner) ausgeführt wird, um Jobs auszuführen
  • Terraform-Umgebung auf der Gitlab-Runner-Maschine zur CI-Ausführung von Terraform-Plänen.

Zunächst sollten Sie Ihr Terraform-Repository auf Ihrer Gitlab-Instanz einrichten und lokal klonen (ja, natürlich sollten Sie git haben!). Wir setzen die URL Ihres Gitlab als |_+_|zum Beispiel Sake voraus.

Sie sollten auch die Terraform-Binärdatei herunterladen und installieren von https://www.terraform.io/ .

Datei erstellen |_+_| im Stammverzeichnis des Projekts, damit Terraform weiß, dass das HTTP-State-Backend verwendet wird:

gitlab.com

Nachdem dies gesagt und getan ist, sollten Sie den Terraform-Arbeitsbereich initialisieren (mit einer kleinen Wendung):

backend.tf

Terraform-Backend wird normalerweise lokal gespeichert, aber wir deklarieren es als Http-Remote in |_+_|und initialisieren es im Terraform-Projekt Ihres Gitlab, damit es zwischen verschiedenen Agenten, die es verwenden (einschließlich des Gitlab-Runners), konsistent bleibt. Andernfalls hat jeder Agent (Mensch oder Maschine) seinen eigenen Zustand, was dazu führt, dass Duplikate der definierten Infrastruktur erstellt werden – und das bei jedem Durchlauf der CI-Pipeline!

#devops #infrastructure-as-code #gitlab-ci #terraform

medium.com

IaC CI mit GitLab und Terraform

Gitlab-Instanz für Quell- und CI-Jobsteuerung/Trigger; Eine Maschine, auf der der Gitlab CI-Agent (Gitlab-Runner) ausgeführt wird, um Jobs auszuführen; Terraform-Umgebung auf ... Infrastruktur als Code war noch nie so einfach.