Gestión de estado de terraformación

Gestion De Estado De Terraformacion



La infraestructura como código es el procedimiento de administración y aprovisionamiento de la infraestructura de TI a través del código que ayuda a superar la complejidad del aprovisionamiento a gran escala y la administración de los recursos de TI de forma manual y repetida. Terraform de HashiCorp es una herramienta IaC de código abierto que utiliza un sistema de gestión de estado para realizar un seguimiento de los cambios y gestionar los archivos de estado. Su sistema de gestión de estado es una de sus características clave y ayuda a realizar un seguimiento de los cambios de infraestructura de manera efectiva. Este artículo se sumerge en cómo funciona la administración de estado de Terraform y cómo usarla de manera efectiva.

Estado de terraformación

El estado actual de nuestra infraestructura, que incluye información sobre los recursos que definimos en nuestro código, se registra como estado de Terraform. Terraform utiliza este estado para determinar los cambios necesarios para llevar nuestra infraestructura al estado deseado cuando se ejecuta un comando como 'aplicar' de Terraform. Después de ejecutar los cambios (crear, modificar y eliminar), Terraform actualiza el archivo de estado con el nuevo estado de su infraestructura.

Para entender claramente el concepto, tomemos un ejemplo:







recurso 'archivo local' 'John' {

nombre de archivo = '/home/John.txt'

contenido = 'Amo a los animales domésticos'

}

Aquí, creamos un archivo Terraform llamado 'main.tf'. En su interior hay un recurso de tipo local_file llamado “John” con dos atributos: nombre de archivo y contenido.



El tipo de recurso local_file se utiliza para crear un archivo en el sistema de archivos local de la máquina donde se ejecuta Terraform. En este caso, el archivo se crea con el nombre “John.txt” en el directorio “/home”, y el contenido del archivo es “Me encantan las mascotas”.



Ahora, realicemos el flujo de Terraform: iniciar, planificar y aplicar Terraform. Cuando ejecutamos el comando 'aplicar' de Terraform en nuestro proyecto por primera vez, Terraform crea automáticamente el archivo de estado llamado 'terraform.tfstate' en el directorio raíz de nuestro proyecto Terraform. Incluye toda la información sobre el estado actual de nuestra infraestructura en formato JSON.





Aquí está el archivo de estado para el recurso que creamos:



Ahora, digamos que queremos eliminar el recurso actual y crear otro recurso de tipo random_pet llamado 'my-pet' con atributos: prefijo, longitud y separador.

recurso 'mascota_aleatoria' 'mi mascota' {

prefijo = 'Señor'

longitud = '1'

separador = '.'

}

Aquí, eliminamos el recurso local_file y agregamos un recurso random_pet. Nuestro estado deseado es tener solo el recurso random_pet. Ejecutemos los comandos de inicio, planificación y aplicación de Terraform.

Como se muestra en la ilustración anterior, cuando ejecutamos el comando “plan” de Terraform, muestra las acciones que Terraform realiza para llegar al estado deseado. Cuando ejecutamos el comando 'aplicar' de Terraform, se crea el recurso 'mi mascota' y se elimina el recurso 'Juan'. Además, el archivo de estado se actualiza destruyendo los metadatos del recurso local_file y agregando los metadatos del recurso random_pet.

Aquí está el contenido del archivo de estado actualizado:

¿Cómo funciona Terraform the Manage State?

Usando un backend, Terraform administra el estado. Un backend es un servicio remoto o un sistema de archivos local que utiliza Terraform para almacenar y recuperar los datos de estado. Dependiendo de nuestros requisitos, podemos elegir un backend adecuado.

Terraform admite varios backends integrados, incluidos local, Amazon S3, HashiCorp Consul, Vault y Azure Storage. También podemos crear un backend personalizado si ninguna de las opciones integradas satisface las necesidades.

En los ejemplos anteriores, los archivos de estado se almacenaron en el servidor local. Pero almacenarlo en un backend remoto es la mejor práctica, ya que invoca la colaboración y aumenta la seguridad.

Importancia de la Gestión del Estado

La gestión del estado en herramientas como Terraform es fundamental por los siguientes puntos clave:

Determine el estado actual de su infraestructura

El archivo de estado proporciona una instantánea precisa de los recursos existentes y sus atributos actuales. Estos datos son imprescindibles para comprender nuestra infraestructura y garantizar que esté en el estado deseado.

Seguimiento de cambios en la infraestructura a lo largo del tiempo

Cada vez que aplicamos los cambios mediante Terraform, el archivo de estado se actualiza para reflejar el nuevo estado de nuestra infraestructura. Esto nos permite hacer un seguimiento de cómo ha evolucionado nuestra infraestructura y proporciona un registro de auditoría de todos los cambios.

Automatización

Definir el estado de su infraestructura deseada en el código nos permite automatizar la creación y administración de nuestra infraestructura. La gestión estatal garantiza que nuestra infraestructura siga siendo la deseada, aunque los cambios se hagan en el tiempo.

Administrar dependencias

Con Terraform, podemos definir las relaciones entre los recursos en nuestro archivo de configuración, y Terraform usa el archivo de estado para garantizar que se mantengan esas relaciones. Esto garantiza que los cambios en un recurso no afecten inadvertidamente a otros recursos.

Recuperación de desastres

Si ocurre una falla o una interrupción, podemos usar el archivo de estado para recrear la infraestructura en un estado conocido. Esto puede ayudar a minimizar el tiempo de inactividad y garantizar que nuestra infraestructura se restablezca de manera rápida y eficiente.

Mejores prácticas para una gestión estatal eficaz

Aquí hay algunos consejos que podemos seguir para administrar los estados de manera efectiva:

Usar un backend remoto

Un backend remoto proporciona varios beneficios sobre un backend local. Permite que varios usuarios trabajen en la misma infraestructura y también ofrecen mejor seguridad y confiabilidad que los backends locales.

Habilitar control de versiones

Al versionar el archivo de estado, podemos rastrear los cambios a lo largo del tiempo y retroceder a una versión anterior si es necesario. Además, el control de versiones proporciona un seguimiento de auditoría y ayuda a garantizar que los cambios se documenten adecuadamente.

Usar un mecanismo de bloqueo

Podemos usar un mecanismo de bloqueo que ayuda a prevenir conflictos cuando varios usuarios trabajan en la misma infraestructura. Terraform admite varias herramientas de bloqueo, incluidas DynamoDB, Consul y S3.

Haga una copia de seguridad de su archivo de estado

Podemos recuperarnos de la corrupción de datos si hacemos una copia de seguridad del archivo de estado con regularidad. Debemos almacenar las copias de seguridad en un lugar seguro y seguir todos los requisitos de cumplimiento pertinentes.

Conclusión

Tuvimos una breve introducción a IaC y Terraform mientras entendíamos los archivos de estado y los administrábamos a través de ejemplos. Comprender cómo funciona Terraform en el estado puede ayudarnos a evitar errores comunes y garantizar que nuestra infraestructura siga siendo deseada. Al seguir las mejores prácticas para administrar estados, podemos usar Terraform con confianza y eficacia.