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.
Umgebung vorbereiten
Klonen Sie das GitHub-Repository mit Terraform-Beispielen:
git clone https://github.com/terraform-google-modules/terraform-docs-samples.git --single-branch
Wechseln Sie in das Arbeitsverzeichnis:
cd terraform-docs-samples/storage/remote_terraform_backend_template
Terraform-Dateien prüfen
Prüfen Sie die Datei
main.tf
.cat main.tf
Die Ausgabe sieht etwa so aus:
In dieser Datei werden die folgenden Ressourcen beschrieben:
random_id
: Dieser wird an den Namen des Cloud Storage-Buckets angehängt, um einen eindeutigen Namen für den Cloud Storage-Bucket zu gewährleisten.google_storage_bucket
: Der Cloud Storage-Bucket, in dem die Statusdatei gespeichert werden soll. Dieser Bucket ist so konfiguriert, dass er die folgenden Eigenschaften hat:force_destroy
ist auffalse
gesetzt, damit der Bucket nicht gelöscht wird, wenn sich Objekte darin befinden. So wird verhindert, dass die Statusinformationen im Bucket versehentlich gelöscht werden.public_access_prevention
ist aufenforced
gesetzt, damit der Bucket-Inhalt nicht versehentlich öffentlich zugänglich gemacht wird.uniform_bucket_level_access
ist auftrue
festgelegt, damit der Zugriff auf den Bucket und seinen Inhalt mit IAM-Berechtigungen anstelle von Zugriffssteuerungslisten gesteuert werden kann.versioning
ist aktiviert, damit frühere Versionen des Status im Bucket erhalten bleiben.
local_file
: Eine lokale Datei. Der Inhalt dieser Datei weist Terraform an, den Cloud Storage-Bucket als Remote-Back-End zu verwenden, sobald der Bucket erstellt wurde.
Cloud Storage-Bucket bereitstellen
Initialisieren Sie Terraform:
terraform init
Wenn Sie
terraform init
zum ersten Mal ausführen, gibt es den in der Dateimain.tf
angegebenen Cloud Storage-Bucket noch nicht. Daher initialisiert Terraform ein lokales Backend, um den Status im lokalen Dateisystem zu speichern.Wenden Sie die Konfiguration an, um die in der Datei
main.tf
beschriebenen Ressourcen bereitzustellen:terraform apply
Geben Sie bei Aufforderung
yes
ein.Wenn Sie
terraform apply
zum ersten Mal ausführen, stellt Terraform den Cloud Storage-Bucket für das Speichern des Zustands bereit. Außerdem wird eine lokale Datei erstellt. Der Inhalt dieser Datei weist Terraform an, den Cloud Storage-Bucket als Remote-Backend zum Speichern des Status zu verwenden.
Status in einen Cloud Storage-Bucket migrieren
Terraform-Zustand in das Remote-Cloud Storage-Backend migrieren:
terraform init -migrate-state
Terraform erkennt, dass Sie bereits eine Statusdatei lokal haben, und fordert Sie auf, den Status in den neuen Cloud Storage-Bucket zu migrieren. Geben Sie bei Aufforderung
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.