Best Practices für die Bereitstellung von Google Cloud-Ressourcen mit Terraform sind in die von Google verwalteten Module des Cloud Foundation Toolkit eingebunden. In diesem Dokument werden einige dieser Best Practices wiederholt.
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.
VM-Images erstellen
Im Allgemeinen empfehlen wir das Erstellen von VM-Images mit einem Tool wie Packer. Terraform muss dann nur Maschinen mit den vorgefertigten Images starten.
Wenn keine vorgefertigten Images verfügbar sind, kann Terraform neue virtuelle Maschinen mit einem provisioner
-Block an ein Konfigurationsverwaltungstool übergeben. Wir empfehlen, diese Methode zu vermeiden und sie nur als letztes Mittel zu verwenden.
Wenn Sie den mit der Instanz verknüpften alten Zustand bereinigen möchten, sollten Bereitsteller, die eine Bereinigungslogik benötigen, einen provisioner
-Block mit when = destroy
verwenden.
Terraform sollte VM-Konfigurationsinformationen für die Konfigurationsverwaltung mit Instanzmetadaten bereitstellen.
Identity and Access Management verwalten
Bei der Bereitstellung von IAM-Verknüpfungen mit Terraform sind mehrere verschiedene Ressourcen verfügbar:
google_*_iam_policy
(z. B.google_project_iam_policy
)google_*_iam_binding
(z. B.google_project_iam_binding
)google_*_iam_member
(z. B.google_project_iam_member
)
google_*_iam_policy
und google_*_iam_binding
erstellen autoritative IAM-Verknüpfungen, wobei die Terraform-Ressourcen als einzige „Source of Truth“ dafür dienen, welche Berechtigungen entsprechenden Ressource zugewiesen werden können.
Wenn sich die Berechtigungen außerhalb von Terraform ändern, überschreibt Terraform bei der nächsten Ausführung alle Berechtigungen, um die in Ihrer Konfiguration definierte Richtlinie darzustellen. Dies kann für Ressourcen sinnvoll sein, die vollständig mit einer bestimmten Terraform-Konfiguration verwaltet werden. Dies bedeutet jedoch, dass automatisch von Google Cloud verwaltete Rollen entfernt werden, was die Funktionalität einiger Dienste beeinträchtigen kann.
Um dies zu verhindern, empfehlen wir entweder die direkte Verwendung von google_*_iam_member
-Ressourcen oder das IAM-Modul von Google.