Para qualquer implementação, é recomendável inspecionar ou modificar o ficheiro de estado. Por exemplo, pode querer importar ou remover recursos da implementação, o que faz através da modificação do ficheiro de estado.
Esta página descreve como trabalhar com o ficheiro de estado do Terraform criado para cada implementação e revisão. Para saber mais sobre o ficheiro de estado, consulte Estado.
As instruções nesta página pressupõem que tem conhecimentos sobre o Terraform.
Antes de começar
Certifique-se de que tem as autorizações necessárias para trabalhar com o ficheiro de estado. A função
config.admin
inclui as autorizações necessárias. As autorizaçõ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
Certifique-se de que tem uma cópia local da configuração do Terraform. Esta é a configuração que corresponde ao ficheiro de estado com o qual está a trabalhar.
A cópia local da configuração permite-lhe executar comandos como
terraform refresh
outerraform plan
localmente enquanto modifica o ficheiro de estado.Instale o Terraform para usar a CLI do Terraform na sua máquina local.
Altere ou inspecione o ficheiro de estado
Para alterar ou inspecionar o ficheiro de estado, tem de bloquear a implementação e transferir o ficheiro de estado. Em seguida, pode alterar ou inspecionar o ficheiro de estado.
Depois de alterar o ficheiro de estado, carregue o ficheiro para o Infra Manager usar na sua implementação.
Bloqueie a implementação
Bloqueie a implementação para impedir alterações à implementação enquanto altera o ficheiro de estado. A implementação tem de estar bloqueada para poder transferir o ficheiro de estado.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Substituição:
- DEPLOYMENT_ID com o identificador de implementação.
- PROJECT_ID com o projeto onde a implementação é executada.
- LOCATION com a localização onde a implementação é executada.
O resultado deste comando contém um
lock ID
que é usado para carregar e desbloquear o ficheiro de estado.Para obter o ID do cadeado em qualquer altura, use o comando:
gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Transfira o ficheiro de estado
Para transferir o ficheiro de estado, usa um URL do Cloud Storage assinado:
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}
Altere o ficheiro de estado localmente
Confirme que a configuração (ficheiros
*.tf
) está no mesmo diretório que o ficheiro de estado transferido (terraform.tfstate
).Inicialize o Terraform:
terraform init
Se tiver inicializado o Terraform anteriormente, pode ter de o inicializar com a flag de reconfiguração:
terraform init -reconfigure
Trabalhe com o ficheiro de estado conforme necessário. Por exemplo, pode fazer operações de inspeção de estado ou mutação. Para ver mais detalhes sobre como trabalhar com o ficheiro de estado, consulte o artigo Manipular o estado do Terraform.
Se fizer alterações aos ficheiros de configuração do Terraform localmente, carregue a configuração modificada. Carregue esta configuração para o contentor de armazenamento ou o repositório git público que está a usar como origem para implementar a configuração.
Carregue o ficheiro de estado
Use um URL do Cloud Storage assinado para carregar o ficheiro de estado:
Obtenha o ID do bloqueio:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Obtenha o URL de carregamento:
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
Desbloqueie a implementação
Obtenha o ID do bloqueio:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Desbloqueie a implementação:
gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
O que se segue?
- Saiba mais sobre o Terraform com Google Cloud.
- Atualize uma implementação.
- Veja o estado de uma implementação.
- Veja os recursos implementados.
- Elimine uma implementação.