Best Practices für Terraform-Vorgänge

Dieses Dokument enthält Richtlinien und Empfehlungen für Terraform-Vorgänge.

Dieser Leitfaden ist keine Einführung in Terraform. Eine Einführung in die Verwendung von Terraform mit Google Cloud finden Sie unter Erste Schritte mit Terraform.

Immer zuerst planen

Generieren Sie immer zuerst einen Plan für Terraform-Ausführungen. Speichern Sie den Plan in einer Ausgabedatei. Führen Sie den Plan aus, nachdem er von einem Infrastrukturinhaber genehmigt wurde. Selbst wenn Entwickler lokal Prototypen für Änderungen erstellen, sollten sie einen Plan generieren und die hinzuzufügenden, zu ändernden und zu löschenden Ressourcen prüfen, bevor sie den Plan anwenden.

Automatisierte Pipeline implementieren

Führen Sie für einen konsistenten Ausführungskontext Terraform über automatisierte Tools aus. Wenn ein Build-System (wie Jenkins) bereits verwendet und weit verbreitet ist, können Sie es mit den Befehlen terraform plan und terraform apply automatisch ausführen. Wenn kein vorhandenes System verfügbar ist, verwenden Sie entweder Cloud Build oder Terraform Cloud.

Dienstkonto-Anmeldedaten für Continuous Integration verwenden

Wenn Terraform von einem Computer in einer CI/CD-Pipeline ausgeführt wird, sollte es die Dienstkonto-Anmeldedaten von dem Dienst übernehmen, der die Pipeline ausführt. Führen Sie nach Möglichkeit CI-Pipelines in Google Cloud aus, da Cloud Build, Google Kubernetes Engine oder Compute Engine Anmeldedaten einfügen, ohne Dienstkontoschlüssel herunterzuladen.

Für Pipelines, die außerhalb von Google Cloud ausgeführt werden, sollten Sie die Identitätsföderation von Arbeitslasten verwenden, um Anmeldedaten abzurufen, ohne Dienstkontoschlüssel herunterzuladen.

Vorhandene Ressourcen nicht importieren

Vermeiden Sie nach Möglichkeit den Import vorhandener Ressourcen (mit terraform import), da es sonst schwierig sein kann, die Herkunft und Konfiguration von manuell erstellten Ressourcen vollständig zu verstehen. Erstellen Sie stattdessen mit Terraform neue Ressourcen und löschen Sie die alten Ressourcen.

Verwenden Sie in Fällen, in denen das Löschen alter Ressourcen erheblichen Aufwand verursachen würde, den Befehl terraform import mit expliziter Genehmigung. Nachdem eine Ressource in Terraform importiert wurde, verwalten Sie sie ausschließlich mit Terraform.

Google bietet ein Tool, mit dem Sie Ihre Google Cloud-Ressourcen in den Terraform-Zustand importieren können. Weitere Informationen finden Sie unter Google Cloud-Ressourcen in den Terraform-Zustand importieren.

Terraform-Zustand nicht manuell ändern

Die Terraform-Zustandsdatei ist für die Zuordnung zwischen der Terraform-Konfiguration und den Google Cloud-Ressourcen von entscheidender Bedeutung. Ihre Beschädigung kann zu erheblichen Infrastrukturproblemen führen. Wenn Änderungen am Terraform-Zustand erforderlich sind, verwenden Sie den Befehl terraform state.

Versionsbindungen regelmäßig prüfen

Das Binden an Versionen gewährleistet Stabilität, verhindert jedoch, dass Fehlerkorrekturen und andere Verbesserungen in Ihre Konfiguration integriert werden. Prüfen Sie daher regelmäßig Versionsbindungen für Terraform, Terraform-Anbieter und Module.

Verwenden Sie ein Tool wie Dependabot, um diesen Prozess zu automatisieren.

Bei der lokalen Ausführung die Standardanmeldedaten für Anwendungen verwenden

Wenn Entwickler die Terraform-Konfiguration lokal iterieren, sollten sie sich authentifizieren. Dazu führen sie gcloud auth application-default login aus, um Standardanmeldedaten für Anwendungen zu generieren. Laden Sie keine Dienstkontoschlüssel herunter, da heruntergeladene Schlüssel schwieriger zu verwalten und zu sichern sind.

Aliasse auf Terraform festlegen

Sie können dem Befehls-Shell-Profil Aliasse hinzufügen, um die lokale Entwicklung zu vereinfachen:

  • alias tf="terraform"
  • alias terrafrom="terraform"

Nächste Schritte