Em qualquer implantação, talvez seja necessário inspecionar ou modificar o arquivo de estado. Por exemplo, você pode importar ou remover recursos da implantação modificando o arquivo de estado.
Nesta página, descrevemos como trabalhar com o arquivo de estado do Terraform criado para cada implantação e revisão. Para saber mais sobre o arquivo de estado, consulte Estado.
As instruções nesta página presumem que você tenha familiaridade com o Terraform.
Antes de começar
Confira se você tem as permissões necessárias para trabalhar com o arquivo de estado. O papel
config.admininclui as permissões necessárias. As permissões específicas necessárias são:config.deployments.lockconfig.revisions.getStateconfig.deployments.updateStateconfig.deployments.unlockconfig.deployments.getLockconfig.deployments.getState
Confira se você tem uma cópia local da configuração do Terraform. Essa é a configuração que corresponde ao arquivo de estado com que você está trabalhando.
A cópia local da configuração permite executar comandos como
terraform refreshouterraform planlocalmente enquanto você modifica o arquivo de estado.Instale o Terraform para usar a CLI do Terraform na máquina local.
Alterar ou inspecionar o arquivo de estado
Para alterar (modificar) ou inspecionar o arquivo de estado, é necessário bloquear a implantação e fazer o download do arquivo de estado. Em seguida, você pode alterar ou inspecionar o arquivo de estado.
Depois de alterar o arquivo de estado, faça o upload do arquivo para que o Infra Manager use na implantação.
Bloquear a implantação
Bloqueie a implantação para evitar mudanças nela enquanto você altera o arquivo de estado. A implantação precisa ser bloqueada para que seja possível fazer o download do arquivo de estado.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATIONSubstitua:
- DEPLOYMENT_ID pelo identificador da implantação.
- PROJECT_ID pelo projeto em que a implantação é executada.
- LOCATION pelo local em que a implantação é executada.
A saída desse comando contém um
lock IDque é usado para fazer upload e desbloquear o arquivo de estado.Para recuperar o ID de bloqueio a qualquer momento, use o comando:
gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Fazer o download do arquivo de estado
Para fazer o download do arquivo de estado, use um URL assinado do Cloud Storage:
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}
Alterar o arquivo de estado localmente
Confirme se a configuração (arquivos
*.tf) está no mesmo diretório que o arquivo de estado baixado (terraform.tfstate).Inicialize o Terraform:
terraform initSe você já tiver inicializado o Terraform, talvez seja necessário inicializar com a flag de reconfiguração:
terraform init -reconfigureTrabalhe com o arquivo de estado conforme necessário. Por exemplo, você pode fazer inspeção de estado ou operações de mutação. Para mais detalhes sobre como trabalhar com o arquivo de estado, consulte Manipular o estado do Terraform.
Se você fizer mudanças nos arquivos de configuração do Terraform localmente, faça o upload da configuração modificada. Faça o upload dessa configuração para o bucket de armazenamento ou repositório Git público que você está usando como origem para implantar a configuração.
Fazer o upload do arquivo de estado
Use um URL assinado do Cloud Storage para fazer o upload do arquivo de estado:
Consiga o ID de bloqueio:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")Consiga o URL de upload:
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}
Desbloquear a implantação
Consiga o ID de bloqueio:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")Desbloqueie a implantação:
gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
A seguir
- Saiba mais sobre o Terraform com Google Cloud.
- Atualizar uma implantação.
- Conferir o estado de uma implantação.
- Conferir os recursos implantados.
- Excluir uma implantação.