Configuración de Estado Remoto en Terraform con Azure

Clase 19 de 37Curso de Terraform

Resumen

¿Cómo establecer un estado remoto en Terraform?

Terraform, una potente herramienta para la gestión de infraestructura como código, utiliza el concepto de estado para realizar un seguimiento de los recursos que se implementan. Al trabajar en equipo, es esencial que todos compartan el mismo estado para evitar inconsistencias. Para lograr esto, se recomienda usar un estado remoto. Un estado remoto permite que todos los cambios de infraestructura se guarden en un único lugar, asegurando que todos los miembros del equipo tengan acceso a la misma información actualizada.

¿Cómo crear un almacenamiento remoto en Azure?

Para implementar un estado remoto en Terraform usando Azure, primero necesitas crear una cuenta de almacenamiento. Esta cuenta actuará como el repositorio central donde se almacenará el archivo de estado de Terraform.

  1. Crear un grupo de recursos:

    • Inicia sesión en el portal de Azure y crea un nuevo grupo de recursos llamado "estados Terraform".
    • Selecciona la ubicación más cercana a tu localización física para mejorar la eficiencia, por ejemplo, "Brasil South".
  2. Crear una cuenta de almacenamiento:

    • En el grupo de recursos "estados Terraform", crea manualmente una cuenta de almacenamiento.
    • Asegúrate de asignar un nombre como "estados", utilizando solo minúsculas para cumplir con las directrices de nomenclatura de Azure.
    • Selecciona nuevamente la región "Brasil South" para que coincida con el grupo de recursos.

¿Qué valores necesitas para configurar el back-end en Terraform?

Una vez que se haya configurado tu cuenta de almacenamiento en Azure, es necesario obtener ciertos valores clave que serán usados en la configuración de back-end en Terraform:

  • Nombre de la cuenta de almacenamiento: Este nombre identifica tu cuenta de almacenamiento en Azure.
  • Nombre del contenedor: Crea un contenedor dentro de tu cuenta de almacenamiento, llamado "state", donde se almacenará el archivo de estado.
  • Nombre del archivo: Elige un nombre para tu archivo de estado, como "estados.tfstate", para facilitar la identificación de diferentes estados si es necesario.
  • Llave de acceso: Obtén la llave de acceso de tu cuenta de almacenamiento desde la sección de llaves de acceso en Azure. Este valor es fundamental para establecer la conexión con el almacenamiento.

¿Cómo configurar el backend en Visual Studio Code?

Con los valores mencionados, puedes establecer el backend en tu archivo de configuración de Terraform:

  1. Crea una carpeta y un archivo para la configuración:

    • Dentro de Visual Studio Code, crea una nueva carpeta llamada "estado remoto".
    • Copia el proyecto de proveedores existente en esta carpeta y agrega un nuevo archivo llamado backend.tf.
  2. Escribe el bloque de configuración:

terraform {
  backend "azurerm" {
    storage_account_name = "estados"
    container_name       = "state"
    key                  = "estados.tfstate"
    # El campo de token SaaS se omite por razones de seguridad
  }
}

En este bloque, especificas que el proveedor de backend es Azure ("azurerm") y detallas los valores para el nombre de la cuenta de almacenamiento, el nombre del contenedor y el nombre del archivo.

¿Qué sigue después de configurar el estado remoto?

Tu archivo de configuración ya está preparado para usar el comando terraform init, que inicializará tu proyecto y mandará toda la información al almacenamiento remoto definido. Es esencial asegurar que el archivo y sus datos asociados estén correctamente configurados, evitando incluir información sensible como el SaaS token en sistemas de control de versiones. Esto garantiza la seguridad de la infraestructura y del acceso a la misma.

¡Adelántate en tu camino profesional aprendiendo constantemente! Terraform es una herramienta poderosa, y al dominarla mejorarás tus habilidades en la gestión de infraestructuras. Enfrenta este reto y verás cómo se amplía tu horizonte en el ámbito del desarrollo de software y la gestión de servicios en la nube.