Terraform-Zustandsdatei verwalten

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

  1. Prüfen Sie, ob Sie die erforderlichen Berechtigungen zum Arbeiten mit der Zustandsdatei haben. Die Rolle config.admin enthält die erforderlichen Berechtigungen. Die erforderlichen Berechtigungen sind:

    • config.deployments.lock
    • config.revisions.getState
    • config.deployments.updateState
    • config.deployments.unlock
    • config.deployments.getLock
    • config.deployments.getState
  2. 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 refresh oder terraform plan lokal ausführen, während Sie die Zustandsdatei ändern.

  3. 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

  1. 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 LOCATION
    

    Ersetzen 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.

  2. 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

  1. Prüfen Sie, ob sich die Konfiguration (*.tf-Dateien) im selben Verzeichnis wie die heruntergeladene Zustandsdatei (terraform.tfstate) befindet.

  2. Initialisieren Sie Terraform:

    terraform init
    
  3. Wenn Sie Terraform bereits initialisiert haben, müssen Sie es möglicherweise mit dem Flag „reconfigure“ initialisieren:

    terraform init -reconfigure
    
  4. Arbeiten 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.

  5. 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:

  1. Rufen Sie die Sperr-ID ab:

    LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
    
  2. 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

  1. Rufen Sie die Sperr-ID ab:

    LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
    
  2. Entsperren Sie die Bereitstellung:

    gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
    

Nächste Schritte