Inicio > Otros paquetes externos > terraform

terraform: Aprovisionamiento y gestión de infraestructura

Terraform es una herramienta de IaC (Infrastructure as Code) de código abierto desarrollada por HashiCorp. Permite aprovisionar y gestionar recursos en la nube y on-premise de forma segura y eficiente utilizando código. Define el estado deseado de tu infraestructura a través de archivos de configuración declarativos, y Terraform planifica y ejecuta automáticamente los pasos para alcanzar ese estado.

Descripción general

Terraform implementa un enfoque de IaC (Infrastructure as Code) para gestionar la infraestructura como código, reduciendo los errores de configuración manual y garantizando la coherencia y repetibilidad de las implementaciones de infraestructura. Admite una amplia gama de proveedores de nube (AWS, Azure, GCP, etc.) y soluciones on-premise, y ofrece potentes funciones para planificar y revisar previamente los cambios en la infraestructura.

Características principales

  • Infraestructura como Código (IaC): Define la infraestructura como código utilizando HCL (HashiCorp Configuration Language).
  • Soporte multi-nube: Admite varios proveedores de nube y servicios como AWS, Azure, GCP, etc.
  • Gestión de estado: Rastrea el estado real de la infraestructura para gestionar eficientemente los cambios.
  • Vista previa del plan de ejecución: Permite ver de antemano qué recursos se crearán, modificarán o eliminarán antes de aplicar los cambios.

Comandos principales (subcomandos)

Terraform utiliza varios subcomandos para realizar flujos de trabajo de gestión de infraestructura.

Flujo de trabajo principal

Utilidades

Comando generado:

Combina los comandos.

Descripción:

`terraform` Ejecutando el comando.

Combina las opciones anteriores para ejecutar virtualmente los comandos junto con la IA.

Ejemplos de uso

Ejemplos que ilustran el flujo de trabajo común de Terraform.

Inicializar un proyecto Terraform

terraform init

Ejecuta esto después de iniciar un nuevo proyecto Terraform o clonar uno existente para descargar los proveedores necesarios.

Vista previa del plan de cambios de infraestructura

terraform plan

Verifica cómo se aplicarán los cambios definidos en los archivos de configuración a tu infraestructura real. En esta etapa no se producen cambios reales en los recursos.

Implementar o actualizar infraestructura

terraform apply --auto-approve

Aplica los cambios verificados con el comando 'plan' a tu infraestructura real en la nube o on-premise. La opción `--auto-approve` omite la solicitud de confirmación.

Eliminar recursos de infraestructura

terraform destroy --auto-approve

Destruye todos los recursos gestionados por Terraform. Este comando debe usarse con extrema precaución.

Formatear archivos de configuración

terraform fmt

Alinea automáticamente todos los archivos de configuración de Terraform (.tf) en el directorio actual con un formato estándar.

Instalación

Terraform no suele venir preinstalado en la mayoría de las distribuciones de Linux, por lo que deberás descargar el binario del sitio web oficial de HashiCorp para instalarlo. A continuación, se muestra el método de instalación recomendado para sistemas basados en Debian/Ubuntu.

Instalación a través del repositorio APT (Debian/Ubuntu)

sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform

Cómo añadir el repositorio APT oficial de HashiCorp e instalar Terraform. Este método facilita la actualización a la última versión.

Verificar la instalación

Después de la instalación, ejecuta el siguiente comando para verificar que Terraform se ha instalado correctamente.

Verificar la versión

terraform -v

Consejos y precauciones

Consejos y precauciones para usar Terraform de manera efectiva y evitar problemas potenciales.

Consejos principales

  • Gestión del archivo de estado: El archivo `terraform.tfstate` registra el estado actual de tu infraestructura, por lo que es recomendable gestionarlo de forma segura y no incluirlo directamente en tu sistema de control de versiones. Es común utilizar backends remotos como S3, Azure Blob Storage o GCS.
  • Uso de módulos: La creación y gestión de componentes de infraestructura reutilizables como módulos mejora la legibilidad y mantenibilidad del código.
  • Revisión del plan: Revisa siempre los cambios previamente con el comando `terraform plan` para evitar modificaciones o eliminaciones no deseadas de recursos. Esto es especialmente importante en entornos de producción.
  • Control de versiones: Los archivos de configuración de Terraform (.tf) deben gestionarse obligatoriamente con un sistema de control de versiones como Git para rastrear el historial de cambios y facilitar la colaboración.
  • Gestión de información sensible: No codifiques directamente claves API, contraseñas u otra información sensible en los archivos de configuración. Utiliza variables de entorno, variables de Terraform (tfvars) o herramientas de gestión de secretos como Vault.

Precauciones

  • El comando `terraform destroy` es irreversible, por lo que siempre debes revisarlo cuidadosamente antes de ejecutarlo y realizar copias de seguridad si es necesario.
  • Corrupción del archivo de estado: Si el archivo de estado se corrompe, Terraform no podrá determinar con precisión el estado real de la infraestructura, lo que puede causar problemas. Reduce este riesgo utilizando backends remotos y funciones de bloqueo.
  • Incompatibilidad de versiones: Las discrepancias entre la versión de la CLI de Terraform y las versiones de los proveedores pueden provocar comportamientos inesperados. Se recomienda fijar las versiones de los proveedores utilizando el archivo `.terraform.lock.hcl`.

Comandos de la misma categoría