Para 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, o que é feito modificando o arquivo de estado.
Esta página descreve 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 desta página pressupõem que você conhece o Terraform.
Antes de começar
Verifique se você tem as permissões necessárias para trabalhar com o arquivo de estado. O papel
config.admin
inclui as permissões necessárias. As permissões específicas necessárias são:config.deployments.lock
config.revisions.getState
config.deployments.updateState
config.deployments.unlock
config.deployments.getLock
config.deployments.getState
Verifique 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 refresh
outerraform plan
localmente enquanto você modifica o arquivo de estado.Instale o Terraform para usar a CLI do Terraform na sua máquina local.
Mutar ou inspecionar o arquivo de estado
Para modificar ou inspecionar o arquivo de estado, é necessário bloquear a implantação e fazer o download dele. Em seguida, você pode modificar ou inspecionar o arquivo de estado.
Depois de modificar o arquivo de estado, faça o upload dele para que o Infra Manager o use na implantação.
Bloquear a implantação
Bloqueie a implantação para evitar mudanças nela enquanto você muda o arquivo de estado. A implantação precisa estar bloqueada para fazer o download do arquivo de estado.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Substitua:
- DEPLOYMENT_ID com o identificador de 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 ID
que é 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}
Mutar o arquivo de estado localmente
Confirme se a configuração (arquivos
*.tf
) está no mesmo diretório que o arquivo de estado transferido por download (terraform.tfstate
).Inicialize o Terraform:
terraform init
Se você já tiver inicializado o Terraform, talvez seja necessário inicializar com a flag de reconfiguração:
terraform init -reconfigure
Trabalhe com o arquivo de estado conforme necessário. Por exemplo, é possível fazer operações de inspeção de estado ou mutação. Para mais detalhes sobre como trabalhar com o arquivo de estado, consulte Manipulação do estado do Terraform.
Se você fizer alterações nos arquivos de configuração do Terraform localmente, faça o upload da configuração modificada. Faça upload dessa configuração para o bucket de armazenamento ou o repositório git público que você está usando como origem para implantar a configuração.
Fazer upload do arquivo de estado
Use um URL assinado do Cloud Storage para fazer upload do arquivo de estado:
Conseguir o ID da fechadura:
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
Conseguir o ID da fechadura:
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.