0Pricing
DevOps Bootcamp · Lección

Provisionadores local-exec y remote-exec

Implemente los provisionadores `local-exec` y `remote-exec` para ejecutar comandos, respectivamente, en la máquina que ejecuta Terraform o en los recursos creados.

Provisionadores local-exec y remote-exec es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.

Conozca los provisioners de Terraform

¿Qué ocurre si necesita ejecutar un script o comando después de que Terraform cree un recurso? ¡Ahí es donde entran en juego los provisioners!

Los provisioners permiten ejecutar acciones en la máquina local o en un recurso remoto como parte de su ciclo de vida. Conectan la creación de infraestructura con la configuración inicial del software.

Considérelos como hooks que le permiten personalizar sus recursos justo después de crearlos.

`local-exec`: ejecución local

El provisioner local-exec ejecuta comandos en la máquina donde se está ejecutando Terraform.

Resulta útil para tareas como:

  • Generar archivos de configuración localmente.
  • Activar scripts o herramientas locales.
  • Realizar operaciones de limpieza después de destruir recursos.

Es perfecto para acciones que no necesitan realizarse en el propio recurso de la nube.

Ejemplo básico de `local-exec`

Veamos cómo local-exec crea un archivo sencillo en su máquina local después de crear un recurso nulo.

Un null_resource es un marcador de posición que no crea nada en la nube, pero resulta útil para activar provisioners.

resource "null_resource" "local_file_creator" {
  provisioner "local-exec" {
    command = "echo 'Local file created by Terraform!' > local_output.txt"
  }

  triggers = {
    always_run = timestamp()
  }
}

Cuándo utilizar `local-exec`

local-exec es ideal para:

  • Notificaciones posteriores a la implementación: enviar un correo electrónico o un mensaje de Slack.
  • Generación de archivos locales: crear archivos de inventario para Ansible u otras herramientas.
  • Comprobaciones previas a la implementación: ejecutar scripts de validación locales.
  • Activación de CI/CD: iniciar un pipeline después de realizar cambios en la infraestructura.

Recuerde que funciona desde el lugar donde ejecuta terraform apply.

`remote-exec`: ejecución en el recurso

A diferencia de local-exec, el provisioner remote-exec ejecuta comandos en el propio recurso remoto.

Es fundamental para las tareas de configuración inicial de un servidor recién creado, como:

  • Instalar paquetes de software (por ejemplo, un servidor web o una base de datos).
  • Configurar los ajustes del sistema operativo.
  • Implementar el código de la aplicación.

Requiere conectividad de red (como SSH para Linux o WinRM para Windows) con el recurso de destino.

Conexión para `remote-exec`

Para que remote-exec funcione, Terraform debe conectarse a su recurso.

Entre los tipos de conexión habituales se incluyen:

  • SSH: para instancias Linux; requiere una clave privada.
  • WinRM: para instancias Windows; requiere credenciales.

Normalmente, configurará los detalles de conexión dentro del bloque provisioner o los heredará del recurso.

`remote-exec` en una instancia EC2

Esta es la forma de utilizar remote-exec para instalar Apache en una instancia EC2 nueva de AWS.

Nota: esto requiere que la instancia EC2 esté aprovisionada y sea accesible mediante SSH. Para simplificar, suponemos que ya existen un par de claves y un grupo de seguridad.

resource "aws_instance" "web_server" {
  ami           = "ami-0abcdef1234567890" # Replace with valid AMI ID
  instance_type = "t2.micro"
  key_name      = "my-ssh-key" # Replace with your SSH key name
  vpc_security_group_ids = ["sg-0123456789abcdef0"] # Replace with your SG ID

  provisioner "remote-exec" {
    inline = [
      "sudo yum update -y",
      "sudo yum install -y httpd",
      "sudo systemctl start httpd",
      "sudo systemctl enable httpd"
    ]
    connection {
      type        = "ssh"
      user        = "ec2-user"
      private_key = file("~/.ssh/my-ssh-key.pem")
      host        = self.public_ip
    }
  }
}

Cuándo utilizar `remote-exec`

remote-exec es ideal para:

  • Preparar servidores: instalar servidores web, bases de datos o Docker.
  • Implementar aplicaciones: copiar el código de la aplicación y configurarlo.
  • Gestionar la configuración: ejecutar playbooks de Ansible o recetas de Chef directamente.
  • Validar después de la creación: comprobar que los servicios se ejecutan en la nueva instancia.

Es la opción principal para configurar el estado inicial de un servidor.

Provisioners al destruir

Los provisioners también pueden ejecutarse cuando se destruye un recurso. Esto resulta útil para tareas de limpieza.

Puede especificar when = destroy dentro de un bloque de provisioner. Por ejemplo, para quitar una instancia de un balanceador de carga antes de terminarla.

También puede configurar el comportamiento de on_failure, que determina qué ocurre si falla un comando del provisioner. De forma predeterminada, se produce un error.

Cuestionario sobre provisioners

¿Qué provisioner usaría para instalar un servidor web (como Nginx) en una instancia de máquina virtual recién creada?

Provisioners: local frente a remoto

Hemos explorado los provisioners de Terraform, herramientas potentes para ejecutar comandos durante el ciclo de vida de los recursos.

  • local-exec ejecuta comandos en la máquina donde se ejecuta Terraform, lo que resulta útil para scripts locales o notificaciones.
  • remote-exec ejecuta comandos directamente en el recurso aprovisionado, lo que resulta ideal para preparar servidores con software o configuraciones.

Los provisioners ayudan a cerrar la brecha entre la implementación de la infraestructura y la configuración inicial de la aplicación. A continuación, profundizaremos en técnicas avanzadas de gestión del estado.

Preguntas frecuentes

¿La lección «Provisionadores local-exec y remote-exec» es gratis?

Sí — el texto completo de «Provisionadores local-exec y remote-exec» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.

¿Qué aprenderé en «Provisionadores local-exec y remote-exec»?

Implemente los provisionadores `local-exec` y `remote-exec` para ejecutar comandos, respectivamente, en la máquina que ejecuta Terraform o en los recursos creados. Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar DevOps Bootcamp?

No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Provisionadores local-exec y remote-exec»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?

Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Consulta de datos con fuentes de datos
  2. Provisionadores local-exec y remote-exec
  3. Recursos nulos y triggers
  4. Uso de datos externos y plantillas
← Volver a DevOps Bootcamp