Sobes.tech
Junior

¿Qué es Terraform?

sobes.tech AI

Respuesta de la IA

Terraform es una herramienta de código abierto creada por HashiCorp para gestionar la infraestructura como código (IaC). Permite describir la infraestructura usando el lenguaje declarativo HCL (HashiCorp Configuration Language) o JSON, y luego desplegarla, modificarla y eliminarla automáticamente.

Características clave de Terraform:

  • Declarativo: Describes el estado deseado de la infraestructura, y Terraform determina las acciones necesarias para alcanzarlo.
  • Inmutable: Terraform prefiere crear recursos nuevos en lugar de modificar los existentes en cambios significativos de configuración, lo que aumenta la fiabilidad y la previsibilidad.
  • Proveedores: Soporta una gran cantidad de proveedores de servicios en la nube (AWS, Azure, GCP), así como otros servicios (Kubernetes, Docker, bases de datos) mediante un sistema de proveedores.
  • Estado: Terraform rastrea el estado de la infraestructura desplegada en un archivo de estado, lo que le permite entender el estado actual y calcular los cambios necesarios.
  • Módulos: Permite crear bloques de configuración reutilizables para organizar el código y simplificar la gestión de infraestructuras complejas.
  • Planificación: Antes de aplicar cambios, Terraform muestra un plan de acciones que se ejecutarán, ayudando a evitar consecuencias inesperadas.

El ciclo de vida típico de trabajo con Terraform incluye las siguientes etapas:

  1. Inicialización (terraform init): Carga de proveedores y módulos necesarios.
    terraform init
    // Inicializa el directorio de trabajo
    
  2. Planificación (terraform plan): Genera un plan de ejecución que muestra qué recursos serán creados, modificados o eliminados.
    terraform plan
    // Crea y muestra el plan de ejecución
    
  3. Aplicación (terraform apply): Ejecuta el plan para crear o modificar la infraestructura.
    terraform apply
    // Aplica el plan a la infraestructura objetivo
    
  4. Eliminación (terraform destroy): Elimina todos los recursos gestionados por la configuración actual de Terraform.
    terraform destroy
    // Elimina todos los recursos gestionados por el estado actual de Terraform
    

Ejemplo de una descripción simple de un recurso en HCL:

resource "aws_instance" "example" {
  # Tipo de recurso (instancia AWS) y su nombre en la configuración
  ami           = "ami-0abcdef1234567890" # ID de la imagen AMI
  instance_type = "t2.micro"            # Tipo de instancia
  tags = {
    # Etiquetas para el recurso
    Name = "example-instance"
  }
}

Terraform simplifica y automatiza significativamente la gestión de infraestructura, haciéndola más predecible, escalable y versionable.