En cualquier implementación, puede que quieras inspeccionar o modificar el archivo de estado. Por ejemplo, puede importar o eliminar recursos del despliegue 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 da por hecho que conoces Terraform.
Antes de empezar
Asegúrate de que tienes 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
localmente mientras modificas el archivo de estado.Instala Terraform para usar la CLI de Terraform en tu máquina local.
Modificar o inspeccionar el archivo de estado
Para mutar (modificar) o inspeccionar el archivo de estado, debes bloquear la implementación y descargar el archivo de estado. Después, puedes mutar o inspeccionar el archivo de estado.
Después de modificar el archivo de estado, lo subes para que Infra Manager lo use en tu implementación.
Bloquear la implementación
Bloquea la implementación para evitar que se hagan cambios en ella mientras modificas 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
Sustituye:
- DEPLOYMENT_ID con el identificador de implementación.
- PROJECT_ID con el proyecto en el que se ejecuta la implementación.
- LOCATION con la ubicación en la que se ejecuta la implementación.
La salida 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 comando:
gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Descargar el archivo de estado
Para descargar el archivo de estado, debes usar una URL de Cloud Storage firmada:
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 el archivo de estado de forma local
Confirma que la configuración (archivos
*.tf
) se encuentra en el mismo directorio que el archivo de estado descargado (terraform.tfstate
).Inicializa Terraform:
terraform init
Si ya has inicializado Terraform, puede que tengas que inicializarlo de nuevo con la marca reconfigure:
terraform init -reconfigure
Trabaja con el archivo de estado según tus necesidades. Por ejemplo, puedes hacer operaciones de inspección de estado o de mutación. Para obtener más información sobre cómo trabajar con el archivo de estado, consulta Manipulating Terraform State (Manipular el estado de Terraform).
Si haces algún cambio en los archivos de configuración de Terraform de forma local, sube la configuración modificada. Sube esta configuración al contenedor de almacenamiento o al repositorio de Git público que estés usando como fuente para desplegar la configuración.
Subir el archivo de estado
Usa una URL de Cloud Storage firmada para subir el archivo de estado:
Obtén el ID del bloqueo:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Obtén la URL de subida:
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 la implementación
Obtén el ID del bloqueo:
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}
Siguientes pasos
- Consulta más información sobre Terraform con Google Cloud.
- Actualiza un despliegue.
- Consulta el estado de un despliegue.
- Consulta los recursos implementados.
- Eliminar un despliegue