Revisa y aplica un cambio de almacenamiento

AWSBeginner
Practicar Ahora

Introducción

Tu equipo necesita etiquetar un almacén de informes existente como versión 2 sin volver a crear el almacenamiento ni cambiar su informe. Revisarás un plan guardado, lo aplicarás y, después, detectarás y repararás una desviación deliberada de una etiqueta.

Este entorno independiente prepara el pequeño almacén inicial y el estado local. Usa tus conocimientos sobre plan/apply, archivos de variables y consultas de S3; no se necesitan estado remoto ni aprobaciones automatizadas.

Relación con las certificaciones

Certificación Tarea del examen Práctica
Cloud Practitioner (CLF-C02) Tarea 3.1 Usar definiciones de infraestructura repetibles y consultas operativas de recursos.
Developer – Associate (DVA-C02) Tarea 3.3, habilidad 3.3.4 Práctica básica de despliegue de una definición de infraestructura.
DevOps Engineer – Professional (DOP-C02) Tarea 2.1 Práctica básica de gestión de recursos mediante una definición de IaC.

Vista conceptual de los recursos de este laboratorio y de los límites de lo que debe conservarse.

Revisa y aplica un plan guardado

En este paso, actualizarás la etiqueta de versión de un almacén de informes preparado mediante un plan guardado, conservando su bucket y su informe existentes.

Esta configuración raíz nueva ya gestiona el pequeño almacén que aprendiste a crear en laboratorios anteriores. La preparación proporciona esa situación inicial para que puedas centrarte en revisar el cambio. La nueva versión deseada es 2; el informe existente debe seguir siendo orders,12. Empieza leyendo la configuración, los valores y la etiqueta actual:

cd /home/labex/project/storage-change
cat main.tf
cat release.tfvars
terraform state list
aws s3api \
  get-bucket-tagging \
  --bucket terraform-change-reports

El archivo de entradas selecciona actualmente la versión 1. Cambiar el nombre de un recurso podría sustituir el almacenamiento, pero cambiar una etiqueta permite actualizar el bucket existente. Cambia únicamente la entrada de versión:

cat > release.tfvars <<'EOF'
release = "2"
EOF
terraform plan -var-file=release.tfvars -out=change.tfplan

Debes ver una actualización del bucket en el mismo recurso: 0 to add, 1 to change, 0 to destroy. -out escribe un artefacto de plan nativo que contiene esta configuración y estos valores de entrada. A diferencia de una vista previa sin guardar, al aplicar este archivo se usa ese plan revisado, en lugar de generar uno nuevo a partir de ediciones posteriores. En proyectos reales, los planes pueden contener valores sensibles, por lo que debes tratarlos como artefactos del proyecto.

Lee el plan guardado antes de aplicarlo:

terraform show change.tfplan

Confirma que Release cambia de 1 a 2 y que no se sustituye ningún objeto ni bucket. Después aplica el artefacto. Un plan guardado no solicita una confirmación adicional con yes:

terraform apply change.tfplan

Consulta la etiqueta actual y lee el informe:

aws s3api \
  get-bucket-tagging \
  --bucket terraform-change-reports
aws s3api \
  get-object \
  --bucket terraform-change-reports \
  --key reports/current.csv \
  retained.csv
cat retained.csv

Debes ver la versión 2 y orders,12. Un plan guardado solo resulta útil cuando el recurso al que se aplica y los datos conservados coinciden con el cambio revisado. AWS View después del despliegue: el almacenamiento gestionado aparece junto al informe de referencia que se conserva.

Detecta y repara una desviación de etiqueta

En este paso, observarás un cambio real de etiqueta realizado fuera de Terraform y restaurarás la configuración declarada sin cambiar el informe.

Una desviación, o drift, es una diferencia entre el recurso desplegado y su configuración deseada. Usa la AWS CLI para cambiar la etiqueta fuera de Terraform. Este ejercicio deliberado cambia un atributo real del recurso que el proveedor puede leer; no edita un marcador local de éxito.

aws s3api \
  put-bucket-tagging \
  --bucket terraform-change-reports \
  --tagging '{"TagSet":[{"Key":"Project","Value":"TerraformReports"},{"Key":"Release","Value":"unexpected"}]}'

Pide a Terraform que compare el recurso actual con la versión deseada. -detailed-exitcode distingue 0 (sin cambios), 2 (un cambio propuesto) y 1 (un error). El siguiente plan devuelve intencionadamente 2; significa que ha encontrado la diferencia de etiqueta, no que el despliegue haya fallado.

terraform plan -var-file=release.tfvars -detailed-exitcode

El plan propone cambiar unexpected de nuevo a 2. Revisa y guarda la reparación y, después, aplica ese artefacto:

terraform plan -var-file=release.tfvars -out=repair.tfplan
terraform show repair.tfplan
terraform apply repair.tfplan

Confirma la etiqueta actual y la convergencia del plan:

aws s3api \
  get-bucket-tagging \
  --bucket terraform-change-reports
terraform plan -var-file=release.tfvars -detailed-exitcode

La etiqueta es 2; el plan final indica No changes y termina con el código 0. El informe permanece sin cambios. Esto demuestra una desviación de etiqueta que el proveedor puede leer, no la detección de todas las posibles modificaciones de datos realizadas fuera de Terraform. Consulta Terraform plan para conocer los planes guardados y los códigos de salida detallados.

Limpia el almacén modificado

En este paso, eliminarás únicamente el almacén gestionado por esta configuración raíz después de superar las comprobaciones del cambio y de la desviación.

Revisa y ejecuta la eliminación, introduciendo yes para destroy:

terraform plan -destroy -var-file=release.tfvars
terraform destroy -var-file=release.tfvars

El objeto de informe se elimina antes que su bucket. Consulta los recursos restantes y la correspondencia vacía:

terraform state list
aws s3api \
  list-buckets \
  --query 'Buckets[].Name'
aws s3api \
  head-object \
  --bucket team-reference-reports \
  --key keep.txt \
  --query ContentLength

El informe de referencia del equipo se conserva. Los planes locales guardados son artefactos de revisión; su presencia no significa que los recursos eliminados de AWS sigan existiendo.

Resumen

Has aplicado un artefacto de plan nativo revisado, distinguido las actualizaciones en el mismo recurso de las sustituciones, observado una desviación real de etiqueta mediante lecturas del proveedor, restaurado la configuración deseada y conservado los datos del informe hasta la limpieza.