Para cualquier implementación, te recomendamos que inspecciones o modifiques el archivo de estado. Por ejemplo, es posible que desees importar o quitar recursos de la implementación, lo que puedes hacer modificando el archivo de estado.
En esta página, se describe cómo trabajar con el archivo de estado de Terraform que se crea para cada implementación y revisión. Para obtener más información sobre el archivo de estado, consulta Estado.
En las instrucciones de esta página, se supone que estás familiarizado con Terraform.
Antes de comenzar
Asegúrate de tener los permisos necesarios para trabajar con el archivo de estado. El rol
config.admin
incluye los permisos necesarios. Los permisos específicos que se necesitan son los siguientes:config.deployments.lock
config.revisions.getState
config.deployments.updateState
config.deployments.unlock
config.deployments.getLock
config.deployments.getState
Asegúrate de tener una copia local de la configuración de Terraform. Esta es la configuración que corresponde al archivo de estado con el que estás trabajando.
La copia local de la configuración te permite ejecutar comandos como
terraform refresh
oterraform plan
de forma local mientras modificas el archivo de estado.Instala Terraform para usar la CLI de Terraform en tu máquina local.
Muta o inspecciona el archivo de estado
Para mutar (modificar) o inspeccionar el archivo de estado, debes bloquear la implementación y descargar el archivo de estado. Luego, puedes mutar o inspeccionar el archivo de estado.
Después de mutar el archivo de estado, debes subirlo para que Infra Manager lo use en tu implementación.
Bloquea la implementación
Bloquea la implementación para evitar que se realicen cambios en ella mientras mutas el archivo de estado. La implementación debe estar bloqueada para poder descargar el archivo de estado.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Reemplaza lo siguiente:
- DEPLOYMENT_ID por el identificador de la implementación.
- PROJECT_ID por el proyecto en el que se ejecuta la implementación.
- LOCATION por la ubicación en la que se ejecuta la implementación.
El resultado de este comando contiene un
lock ID
que se usa para subir y desbloquear el archivo de estado.Para recuperar el ID de la cerradura en cualquier momento, usa el siguiente comando:
gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Descarga el archivo de estado
Para descargar el archivo de estado, usa una URL firmada de 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}
Muta el archivo de estado de forma local
Confirma que la configuración (archivos
*.tf
) esté en el mismo directorio que el archivo de estado descargado (terraform.tfstate
).Inicializa Terraform mediante este comando:
terraform init
Si ya inicializaste Terraform, es posible que debas inicializarlo con la marca de reconfiguración:
terraform init -reconfigure
Trabaja con el archivo de estado según sea necesario. Por ejemplo, puedes realizar operaciones de inspección de estado o mutación. Para obtener más detalles sobre cómo trabajar con el archivo de estado, consulta Cómo manipular el estado de Terraform.
Si realizas algún cambio en los archivos de configuración de Terraform de forma local, sube la configuración modificada. Sube esta configuración al bucket de almacenamiento o al repositorio git público que usas como fuente para implementar la configuración.
Sube el archivo de estado
Usa una URL firmada de Cloud Storage para subir el archivo de estado:
Obtén el ID de la cerradura:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Obtén la URL de carga:
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
Desbloquea la implementación
Obtén el ID de la cerradura:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Desbloquea la implementación:
gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
¿Qué sigue?
- Obtén más información sobre Terraform con Google Cloud.
- Actualiza una implementación.
- Consulta el estado de una implementación.
- Ver los recursos implementados.
- Borra una implementación.