Per qualsiasi deployment, potresti voler esaminare o modificare il file di stato. Ad esempio, potresti voler importare o rimuovere risorse dal deployment, operazione che esegui modificando il file di stato.
Questa pagina descrive come utilizzare il file di stato di Terraform che viene creato per ogni deployment e revisione. Per scoprire di più sul file di stato, consulta Stato.
Le istruzioni riportate in questa pagina presuppongono che tu abbia familiarità con Terraform.
Prima di iniziare
Assicurati di disporre delle autorizzazioni necessarie per lavorare con il file di stato. Il ruolo
config.admininclude le autorizzazioni richieste. Le autorizzazioni specifiche necessarie sono:config.deployments.lockconfig.revisions.getStateconfig.deployments.updateStateconfig.deployments.unlockconfig.deployments.getLockconfig.deployments.getState
Assicurati di avere una copia locale della configurazione Terraform. Questa è la configurazione che corrisponde al file di stato con cui stai lavorando.
La copia locale della configurazione ti consente di eseguire comandi come
terraform refreshoterraform planlocalmente mentre modifichi il file di stato.Installa Terraform per utilizzare Terraform CLI sulla tua macchina locale.
Modificare o esaminare il file di stato
Per modificare o ispezionare il file di stato, devi bloccare il deployment e scaricare il file di stato. A questo punto, puoi modificare o esaminare il file di stato.
Dopo aver modificato il file di stato, caricalo in Infra Manager per utilizzarlo nel deployment.
Bloccare il deployment
Blocca il deployment per impedire modifiche durante la mutazione del file di stato. Il deployment deve essere bloccato per poter scaricare il file di stato.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATIONSostituisci:
- 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 IDutilizzato 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}
Modificare 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 initSe hai già inizializzato Terraform, potrebbe essere necessario inizializzarlo con il flag di riconfigurazione:
terraform init -reconfigureLavora con il file di stato come preferisci. Ad esempio, puoi eseguire operazioni di ispezione dello stato o mutazione. Per maggiori dettagli sull'utilizzo del file di stato, vedi Manipolazione dello stato di Terraform.
Se apporti modifiche ai file di configurazione Terraform in locale, 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 firmato di Cloud Storage per caricare il file di stato:
Recupera l'ID serratura:
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}
Sblocca il deployment
Recupera l'ID serratura:
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.
- Visualizzare lo stato di un deployment.
- Visualizza le risorse di cui è stato eseguito il deployment.
- Eliminare un deployment.