Per qualsiasi deployment, ti consigliamo di ispezionare o modificare il file di stato. Ad esempio, potresti voler importare o rimuovere risorse dal deployment, cosa che puoi fare modificando il file di stato.
Questa pagina descrive come utilizzare il file dello stato Terraform che viene creato per ogni deployment e revisione. Per scoprire di più sul file stato, consulta Stato.
Le istruzioni riportate in questa pagina presuppongono che tu abbia dimestichezza con Terraform.
Prima di iniziare
Assicurati di disporre delle autorizzazioni necessarie per lavorare con il file di stato. Il ruolo
config.admin
include le autorizzazioni richieste. Le autorizzazioni specifiche necessarie sono:config.deployments.lock
config.revisions.getState
config.deployments.updateState
config.deployments.unlock
config.deployments.getLock
config.deployments.getState
Assicurati di avere una copia locale della configurazione Terraform. Questa è la configurazione corrispondente al file di stato con cui stai lavorando.
La copia locale della configurazione ti consente di eseguire comandi come
terraform refresh
oterraform plan
localmente mentre modifichi il file dello stato.Installa Terraform per utilizzare l'interfaccia a riga di comando Terraform sulla tua macchina locale.
Mutare o ispezionare il file di stato
Per modificare (modificare) o ispezionare il file di stato, devi bloccare il deployment e scaricare il file di stato. Puoi quindi modificare o ispezionare il file dello stato.
Dopo aver modificato il file dello stato, caricalo per consentirne l'utilizzo da parte di Infra Manager nel deployment.
Bloccare il deployment
Blocca il deployment per impedire eventuali modifiche durante la mutazione del file state. Il deployment deve essere bloccato per poter scaricare il file dello stato.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Sostituisci:
- DEPLOYMENT_ID con l'identificatore del deployment.
- PROJECT_ID con il progetto in cui viene eseguito il deployment.
- LOCATION con la località in cui viene eseguito il deployment.
L'output di questo comando contiene un
lock ID
utilizzato per caricare e sbloccare il file di stato.Per recuperare l'ID blocco in qualsiasi momento, utilizza il comando:
gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Scarica il file di stato
Per scaricare il file di stato, utilizza un URL Cloud Storage firmato:
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}
Mutare il file di stato localmente
Verifica che la configurazione (file
*.tf
) si trovi nella stessa directory del file di stato scaricato (terraform.tfstate
).Inizializza Terraform:
terraform init
Se hai già inizializzato Terraform, potrebbe essere necessario inizializzarlo con il flag di ricofigurazione:
terraform init -reconfigure
Utilizza il file di stato in base alle tue esigenze. Ad esempio, puoi eseguire operazioni di ispezione dello stato o mutazione. Per maggiori dettagli sull'utilizzo del file dello stato, consulta Manipolare lo stato di Terraform.
Se apporti modifiche ai file di configurazione Terraform localmente, carica la configurazione modificata. Carica questa configurazione nel bucket di archiviazione o nel repository git pubblico che utilizzi come origine per il deployment della configurazione.
Carica il file di stato
Utilizza un URL Cloud Storage firmato per caricare il file di stato:
Recupera l'ID blocco:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Ottieni l'URL di caricamento:
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
Sbloccare il deployment
Recupera l'ID blocco:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Sblocca il deployment:
gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
Passaggi successivi
- Scopri di più su Terraform con Google Cloud.
- Aggiorna un deployment.
- Visualizza lo stato di un deployment.
- Visualizza le risorse di cui è stato eseguito il deployment.
- Eliminare un deployment.