Für jede Bereitstellung können Sie die Zustandsdatei prüfen oder ändern. Beispielsweise können Sie Ressourcen in die Bereitstellung importieren oder daraus entfernen, indem Sie die Zustandsdatei ändern.
Auf dieser Seite wird beschrieben, wie Sie mit der Terraform-Zustandsdatei arbeiten, die für jede Bereitstellung und Überarbeitung erstellt wird. Weitere Informationen zur Zustands datei finden Sie unter Zustand.
Die Anleitung auf dieser Seite setzt voraus, dass Sie mit Terraform vertraut sind.
Hinweis
Prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Arbeiten mit der Zustandsdatei haben. Die Rolle
config.adminenthält die erforderlichen Berechtigungen. Die erforderlichen Berechtigungen sind:config.deployments.lockconfig.revisions.getStateconfig.deployments.updateStateconfig.deployments.unlockconfig.deployments.getLockconfig.deployments.getState
Prüfen Sie, ob Sie eine lokale Kopie der Terraform-Konfiguration haben. Dies ist die Konfiguration, die der Zustandsdatei entspricht, mit der Sie arbeiten.
Mit der lokalen Kopie der Konfiguration können Sie Befehle wie
terraform refreshoderterraform planlokal ausführen, während Sie die Zustandsdatei ändern.Installieren Sie Terraform um die Terraform CLI auf Ihrem lokalen Computer zu verwenden.
Zustandsdatei ändern oder prüfen
Wenn Sie die Zustandsdatei ändern oder prüfen möchten, müssen Sie die Bereitstellung sperren und die Zustandsdatei herunterladen. Anschließend können Sie die Zustandsdatei ändern oder prüfen.
Nachdem Sie die Zustandsdatei geändert haben, laden Sie sie hoch, damit sie von Infra Manager in Ihrer Bereitstellung verwendet werden kann.
Bereitstellung sperren
Sperren Sie die Bereitstellung, um Änderungen an der Bereitstellung zu verhindern, während Sie die Zustandsdatei ändern. Die Bereitstellung muss gesperrt sein, damit Sie die Zustandsdatei herunterladen können.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATIONErsetzen Sie:
- DEPLOYMENT_ID durch die Bereitstellungs-ID.
- PROJECT_ID durch das Projekt, in dem die Bereitstellung ausgeführt wird.
- LOCATION durch den Standort, an dem die Bereitstellung ausgeführt wird.
Die Ausgabe dieses Befehls enthält eine
lock ID, die zum Hochladen und Entsperren der Zustandsdatei verwendet wird.Verwenden Sie den folgenden Befehl, um die Sperr-ID jederzeit abzurufen:
gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Zustandsdatei herunterladen
Verwenden Sie eine signierte Cloud Storage-URL, um die Zustandsdatei herunterzuladen:
SIGNED_STATE_DOWNLOAD_URL=$(gcloud infra-manager deployments export-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(signedUri)")
curl -s -X GET --output terraform.tfstate ${SIGNED_STATE_DOWNLOAD_URL}
Zustandsdatei lokal ändern
Prüfen Sie, ob sich die Konfiguration (
*.tf-Dateien) im selben Verzeichnis wie die heruntergeladene Zustandsdatei (terraform.tfstate) befindet.Initialisieren Sie Terraform:
terraform initWenn Sie Terraform bereits initialisiert haben, müssen Sie es möglicherweise mit dem Flag „reconfigure“ initialisieren:
terraform init -reconfigureArbeiten Sie nach Bedarf mit der Zustandsdatei. Sie können beispielsweise Vorgänge zur Zustandsprüfung oder änderung ausführen. Weitere Informationen zum Arbeiten mit der Zustandsdatei finden Sie unter Terraform-Zustand bearbeiten.
Wenn Sie lokal Änderungen an den Terraform-Konfigurationsdateien vornehmen, laden Sie die geänderte Konfiguration hoch. Laden Sie diese Konfiguration in den Speicher-Bucket oder das öffentliche Git-Repository hoch, das Sie als Quelle für die Bereitstellung der Konfiguration verwenden.
Zustandsdatei hochladen
Verwenden Sie eine signierte Cloud Storage-URL um die Zustandsdatei hochzuladen:
Rufen Sie die Sperr-ID ab:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")Rufen Sie die Upload-URL ab:
SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID} --format="get(signedUri)") curl -s -X PUT --upload-file terraform.tfstate ${SIGNED_STATE_UPLOAD_URL}
Bereitstellung entsperren
Rufen Sie die Sperr-ID ab:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")Entsperren Sie die Bereitstellung:
gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
Nächste Schritte
- Weitere Informationen zu Terraform mit Google Cloud.
- Bereitstellung aktualisieren.
- Status einer Bereitstellung ansehen.
- Bereitgestellte Ressourcen ansehen.
- Bereitstellung löschen.