• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

154
Views
Migración de estado remoto a backend en Terraform 0.9

Descargué terraform 0.9 e intenté seguir la guía de migración para pasar del remote-state al backend

Pero no parece funcionar. Reemplacé:

 data "terraform_remote_state" "state" { backend = "s3" config { bucket = "terraform-state-${var.environment}" key = "network/terraform.tfstate" region = "${var.aws_region}" } }

con

 terraform { backend "s3" { bucket = "terraform-backend" key = "network/terraform.tfstate" region = "us-west-2" } }

sin embargo, cuando ejecuto terraform init en una de mis carpetas de entorno, obtengo:

Advertencia de obsolescencia: este entorno está configurado para usar el estado remoto heredado. El estado remoto cambió significativamente en Terraform 0.9. Actualice su configuración de estado remoto para usar la nueva configuración de 'backend'. Por ahora, Terraform continuará usando su configuración actual. El soporte de estado remoto heredado se eliminará en Terraform 0.11.

Puede encontrar una guía para actualizar aquí:

https://www.terraform.io/docs/backends/legacy-0-8.html

También tuve que eliminar la interpolación de variables ya que esto ya no está permitido. ¿Significa eso que un S3 Bucket se usa para múltiples entornos? ¿Qué me he perdido aquí?

over 3 years ago · Santiago Trujillo
2 answers
Answer question

0

Según la guía de actualización ( https://www.terraform.io/docs/backends/legacy-0-8.html ) después de terraform init , también debe ejecutar el terraform plan para finalizar la migración, que actualizará el archivo de estado remoto en s3 .

En cuanto a la configuración para múltiples entornos, terminamos usando una secuencia de comandos de shell contenedor con el paso de parámetros para ${application_name}/${env}/${project} y usando una configuración parcial.

Para una estructura de proyecto como esta:

 ├── projects │  └── application-name │  ├── dev │  │  ├── bastion │  │  ├── db │  │  ├── vpc │  │  └── web-cluster │  ├── prod │  │  ├── bastion │  │  ├── db │  │  ├── vpc │  │  └── web-cluster │  └── backend.config └── run-tf.sh

para cada application_name/env/component = carpeta (es decir, dev/vpc) agregamos un archivo de configuración de back-end de marcador de posición como este: backend.tf :

 terraform { backend "s3" { } }

Donde el contenido de la carpeta para cada componente se verá así:

 │  ├── prod │  │  ├── vpc │  │  │  ├── backend.tf │  │  │  ├── main.tf │  │  │  ├── outputs.tf │  │  │  └── variables.tf

En el nivel "application_name/" o "application_name/env" agregamos un archivo backend.config, como este:

 bucket = "BUCKET_NAME" region = "region_name" lock = true lock_table = "lock_table_name" encrypt = true

Nuestro script de shell contenedor espera que se ejecuten los parámetros application-name , environment , component y el terraform cmd real.

El contenido del script run-tf.sh (simplificado):

 #!/bin/bash application=$1 envir=$2 component=$3 cmd=$4 tf_backend_config="root_path/$application/$envir/$component/backend.config" terraform init -backend=true -backend-config="$tf_backend_config" -backend-config="key=tfstate/${application}/${envir}/${component}.json" terraform get terraform $cmd

Así es como se ve una invocación típica de run-tf.sh:

 $ run-tf.sh application_name dev vpc plan $ run-tf.sh application_name prod bastion apply
over 3 years ago · Santiago Trujillo Report

0

Te confundiste con el comando remoto terraform con el estado remoto. No tiene que cambiar ninguna cosa de estado remoto que tenga en sus archivos tf.

En lugar de configurar su estado remoto con el comando remoto terraform y use el archivo de configuración de back-end mencionado en el enlace de migración.

Vea el segundo comentario de github en este enlace. Tiene un buen procedimiento paso a paso sobre lo que hizo para migrar. https://github.com/hashicorp/terraform/issues/12792

over 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error