In dieser Anleitung erfahren Sie, wie Sie den Terraform-Zustand in einem Cloud Storage-Bucket speichern.
Standardmäßig speichert Terraform den Status lokal in einer Datei mit dem Namen terraform.tfstate
. Diese Standardkonfiguration kann die Verwendung von Terraform für Teams erschweren, wenn mehrere Nutzer Terraform gleichzeitig ausführen und jeder Computer ein eigenes Verständnis der aktuellen Infrastruktur hat.
Um solche Probleme zu vermeiden, erfahren Sie auf dieser Seite, wie Sie einen Remotestatus konfigurieren, der auf einen Cloud Storage-Bucket verweist. Der Remote-Status ist ein Feature von Terraform-Back-Ends.
Kosten
Für Cloud Storage fallen Kosten für Speicher, Lese- und Schreibvorgänge, ausgehenden Netzwerktraffic und die Replikation an.
Für den Cloud Storage-Bucket in dieser Anleitung ist die Objektversionsverwaltung aktiviert, um den Verlauf Ihrer Bereitstellungen zu speichern. Durch das Aktivieren der Objektversionsverwaltung werden die Speicherkosten erhöht. Dies können Sie umgehen, indem Sie die Verwaltung des Objektlebenszyklus so konfigurieren, dass alte Statusversionen gelöscht werden.
Vorbereitung
-
Achten Sie darauf, dass Sie die erforderlichen
Cloud Storage-Berechtigungen für Ihr Nutzerkonto haben:
storage.buckets.create
storage.buckets.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
Weitere Informationen zu Rollen und Berechtigungen
Als Best Practice empfehlen wir, dass der Zugriff auf den Bucket und die dort gespeicherten Statusdateien kontrolliert werden. Nur eine kleine Gruppe von Nutzern (z. B. der Haupt-Cloud-Administrator und die Person, die als alternativer oder Sicherungsadministrator fungiert) sollte Administratorberechtigungen für den Bucket haben. Die anderen Entwickler sollten nur Berechtigungen zum Schreiben und Lesen von Objekten im Bucket haben.
- Cloud Shell starten
Cloud Shell ist eine virtuelle Compute Engine-Maschine. Die Dienstanmeldedaten, die dieser virtuellen Maschine zugeordnet sind, erfolgen automatisch. Daher müssen Sie keinen Dienstkontoschlüssel einrichten oder herunterladen.
- Aktivieren Sie die Cloud Storage API.
gcloud services enable storage.googleapis.com
Terraform so konfigurieren, dass der Status in einem Cloud Storage-Bucket gespeichert wird
In den folgenden Schritten erstellen Sie einen Cloud Storage-Bucket und ändern die Backend-Konfiguration in Ihren neuen Bucket und Ihr Google Cloud-Projekt.
Bucket erstellen
Fügen Sie einer Terraform-Konfigurationsdatei, z. B.
main.tf
, die folgende Terraform-Ressourcegoogle_storage_bucket
hinzu:Im Code-Snippet ist das Feld
location
hartcodiert inUS
, d. h., es wird ein Bucket mit mehreren Regionen in den USA erstellt. Sie können dieses Feld in einen Speicherort Ihrer Wahl ändern.Führen Sie
terraform apply
aus, um den Storage-Bucket zu erstellen.
Backend-Konfiguration ändern
Fügen Sie einer neuen Terraform-Konfigurationsdatei namens
backend.tf
den folgenden Text hinzu.terraform { backend "gcs" { bucket = "BUCKET_NAME" prefix = "terraform/state" } }
Aktualisieren Sie den BUCKET_NAME so, dass er mit dem Namen Ihres neuen Cloud Storage-Buckets übereinstimmt.
Führen Sie
terraform init
aus, um Ihr Terraform-Backend zu konfigurieren.Terraform erkennt, dass Sie bereits eine Statusdatei lokal haben, und fordert Sie auf, diese in den neuen Cloud Storage-Bucket zu kopieren. Geben Sie
yes
ein.
Nach der Ausführung dieses Befehls wird der Terraform-Zustand im Cloud Storage-Bucket gespeichert. Terraform ruft den letzten Status aus diesem Bucket ab, bevor ein Befehl ausgeführt wird, und überträgt den neuesten Status nach Ausführung eines Befehls an den Bucket.