Articles

Migrar Estado a Terraform Cloud

Posted by admin

Como usuario actual de la CLI de Terraform, usted es responsable de mantener un archivo de estado como fuente de verdad para su infraestructura de nube. Puede migrar su archivo de estado local a Terraform Cloud sin interrumpir o recrear su infraestructura existente.

Advertencia: Cuando cargue un archivo de estado en Terraform Cloud utilizando los pasos de este tutorial, utilice siempre la misma versión de la CLI de Terraform que utilizó para crear los recursos. El uso de una versión más reciente de Terraform puede actualizar el archivo de estado y causar daños en el archivo de estado.

«Requisitos previos

Este tutorial asume que tiene lo siguiente:

  • La CLI de Terraform instaló localmente
  • Una cuenta de Terraform Cloud

Nota: Debido a que el backend remote no era compatible con la versión anterior de Terraform, debe usar 0.11.13 o superior para migrar su estado a Terraform Cloud. Los fragmentos de este tutorial usan sintaxis 0.12.

Si no tiene Terraform instalado localmente, puede completar este tutorial en un laboratorio interactivo desde su navegador web. Lanzamiento aquí.

«Crear estado

Comience clonando este repositorio de GitHub.

$ git clone https://github.com/hashicorp/learn-state-migration

Copia

a continuación, cambie al directorio.

$ cd learn-state-migration

Copie

Revise el archivo main.tf en el directorio de trabajo para obtener una visión general de los recursos que está a punto de crear. Esta configuración utiliza el recurso random_pet para generar y generar un nombre de mascota aleatorio con un número determinado de palabras. La longitud del nombre viene determinada por el valor de la variable name_length, cuyo valor predeterminado es 3.

En una configuración del mundo real, es posible que tenga variables adicionales, como credenciales de plataforma en la nube definidas en un archivo .tfvars. Explicaremos cómo establecer estos valores en el espacio de trabajo de Terraform Cloud más adelante en este tutorial, después de migrar el archivo de estado.

## Terraform configurationterraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14"}variable "name_length" { description = "The number of words in the pet name" default = "3"}resource "random_pet" "pet_name" { length = var.name_length separator = "-"}output "pet_name" { value = random_pet.pet_name.id}

Copia

Inicializar el directorio.

$ terraform init

Copie

Después de inicializar Terraform, aplique la configuración y apruebe la ejecución escribiendo » sí » en el mensaje.

$ terraform apply

Copiar

Terraform generará un nombre de mascota generado aleatoriamente de tres palabras.

» Configurar el backend remoto

Ahora que tiene un archivo de estado local, necesita crear un bloque de código de backend en su configuración. Los motores le dicen a Terraform dónde cargar y guardar su archivo de estado.

Terraform utiliza el motor local de forma predeterminada si no define explícitamente un bloque de código de motor en su configuración. El motor local guarda su estado como un archivo terraform.tfstate en el directorio donde ejecuta terraform apply. Para migrar archivos de estado a Terraform Cloud, defina un backend remote en su configuración agregando un nuevo bloque de código al comienzo de su archivo main.tf.

terraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14" backend "remote" { hostname = "app.terraform.io" organization = "<YOUR-ORG-NAME>" workspaces { name = "state-migration" } }}

Copie

Reemplace los valores de los atributos organización y espacios de trabajo por el nombre de su organización Terraform Cloud y el nombre del espacio de trabajo deseado. Si bien la organización definida en la estrofa de backend ya debe existir, el espacio de trabajo no tiene que existir; Terraform Cloud lo creará si es necesario. Si opta por usar un espacio de trabajo que ya existe, el espacio de trabajo no debe tener ningún estado existente.

Nota: Si está familiarizado con la ejecución de Terraform mediante la CLI, es posible que haya utilizado espacios de trabajo Terraform. Los espacios de trabajo Terraform Cloud se comportan de manera diferente a los espacios de trabajo CLI de Terraform. Los espacios de trabajo CLI de Terraform permiten que existan varios archivos de estado dentro de un solo directorio, lo que le permite usar una configuración para varios entornos. Los espacios de trabajo en la nube Terraform contienen todo lo necesario para administrar un conjunto determinado de infraestructura y funcionan como directorios de trabajo separados.

«Autenticarse con Terraform Cloud

Ahora que ha definido su backend, debe autenticarse con Terraform Cloud para proceder con la inicialización. Para autenticarse con Terraform Cloud, ejecute el subcomando terraform login y siga las instrucciones para iniciar sesión.

Nota: Si está utilizando una versión de Terraform anterior a 0.12.21, el comando terraform login no está disponible. En su lugar, configure un archivo de configuración de CLI para autenticarse.

$ terraform loginTerraform will request an API token for app.terraform.io using your browser.If login is successful, Terraform will store the token in plain text inthe following file for use by subsequent commands: /Users/username/.terraform.d/credentials.tfrc.jsonDo you want to proceed? Only 'yes' will be accepted to confirm. Enter a value:

Copiar

Responder al mensaje de confirmación con un yes.

Para obtener instrucciones más detalladas sobre cómo iniciar sesión, consulte el tutorial de inicio de sesión.

» Migrar el archivo de estado

Una vez que haya autenticado el backend remote, estará listo para migrar su archivo de estado local a Terraform Cloud. Para comenzar la migración, reinicializar. Esto hace que Terraform reconozca su configuración de backend modificada.

$ terraform initInitializing the backend...Do you want to copy existing state to the new backend? Pre-existing state was found while migrating the previous "local" backend to the newly configured "remote" backend. No existing state was found in the newly configured "remote" backend. Do you want to copy this state to the new "remote" backend? Enter "yes" to copy and "no" to start with an empty state. Enter a value:

Copiar

Durante la reinicialización, Terraform presenta un mensaje que indica que copiará el archivo de estado al nuevo motor. Introduzca yes y Terraform migrará el estado de su máquina local a Terraform Cloud.

«Configure el espacio de trabajo de Terraform Cloud

Después de migrar su estado a Terraform Cloud, inicie sesión en la interfaz de usuario web de Terraform Cloud, busque el nombre de su espacio de trabajo tal como se define en la configuración del backend y haga clic en él. Vaya a la pestaña» Estados » del espacio de trabajo y vea su primera acción dentro del espacio de trabajo.

 Una vista de la pestaña "Estados" en el espacio de trabajo de la nube Terraform

Recuerde que su configuración tiene una variable que debe agregar al espacio de trabajo nuevo. Haga clic en la pestaña» Variables «en el espacio de trabajo y, a continuación, en»Agregar variable».Introduzca el nombre de la variable, name_length, como clave. A continuación, introduzca un valor nuevo, 5, y guarde la variable.

La pestaña Variables del espacio de trabajo en la nube de Terraform con una variable añadida

Para configuraciones del mundo real, agregue credenciales de plataforma en la nube y cualquier otra variable de configuración al espacio de trabajo también.

» Iniciar una ejecución en el nuevo espacio de trabajo

Después de verificar que el estado se ha migrado al espacio de trabajo de Terraform Cloud, elimine el archivo de estado local.

$ rm terraform.tfstate

Copia

Aplicar una nueva ejecución.

$ terraform apply

Copiar

Terraform transmitirá los registros de Terraform Cloud y proporcionará un enlace a la ejecución en la interfaz de usuario de Terraform Cloud. Se establece un nuevo valor para la variable name_length, por lo que el recurso se reemplazará por uno que coincida con los nuevos parámetros.

 Imagen de una confirmación de ejecución en espera, el registro indica que se reemplazará el recurso

«Pasos siguientes

Destruya los recursos que creó para este tutorial haciendo clic primero en la opción» Configuración «en el espacio de trabajo de Terraform Cloud, seleccionando» Destrucción y destrucción», asegurándose de que la casilla de verificación» Permitir planes de destrucción «esté marcada y, a continuación, haciendo clic en»Plan de destrucción en cola».

Después de destruir los recursos, vuelva a la página «Destrucción y destrucción» y haga clic en «Eliminar de Terraform Cloud» para eliminar el espacio de trabajo.

En este tutorial, migró un archivo de estado de su máquina local a un espacio de trabajo en la nube de Terraform. Para obtener información sobre cómo migrar los archivos de estado de varios espacios de trabajo locales o restringir el acceso al espacio de trabajo a un equipo en particular, consulte la siguiente documentación.

  • Migrar el estado desde varios Espacios de trabajo locales
  • Administrar el acceso al espacio de trabajo

Si tiene una gran cantidad de archivos de estado que desea migrar a Terraform Cloud, considere usar la API de Terraform Cloud para hacerlo. Para obtener información sobre la carga de versiones de estado mediante la API, consulte la documentación de la API de versión de estado.

Related Post

Leave A Comment