0Pricing
DevOps Bootcamp · Lección

Recursos nulos y triggers

Descubra `null_resource` para ejecutar comandos arbitrarios que no corresponden a un recurso real en la nube, y use triggers para controlar cuándo se ejecutan los provisionadores.

Recursos nulos y triggers es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 3 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.

¿Qué es null_resource?

null_resource de Terraform es un tipo especial de recurso que no crea ni administra directamente ningún objeto de infraestructura en su proveedor de nube.

En su lugar, actúa como marcador de posición para ejecutar comandos o scripts arbitrarios, y suele utilizarse para tareas que quedan fuera del alcance del aprovisionamiento habitual de recursos.

¿Por qué usar null_resource?

Tal vez se pregunte por qué necesitaría un recurso «null». Resulta sumamente útil para:

  • Ejecutar scripts locales: Ejecutar comandos en la máquina donde se ejecuta Terraform (por ejemplo, preparar archivos de configuración).
  • Acciones posteriores a la implementación: Realizar tareas de configuración o limpieza después de aprovisionar los recursos reales.
  • Interactuar con API externas: Cuando no existe un proveedor de Terraform específico para un servicio determinado.
  • Lógica personalizada: Orquestar pasos personalizados que no están vinculados a un recurso de nube específico.

Estructura básica de null_resource

Un bloque null_resource tiene el mismo aspecto que cualquier otro recurso de Terraform. Por sí solo, sin provisioners ni triggers, simplemente crea un objeto «null» en el estado de Terraform y no hace nada más.

Normalmente se combina con provisioners para ejecutar comandos y con triggers para controlar cuándo se ejecutan dichos comandos.

Ejemplo sencillo de null_resource

A continuación se muestra un null_resource mínimo. Si ejecuta terraform apply, se creará en el estado, pero no se realizará ninguna acción externa.

Es simplemente un marcador de posición, listo para ampliarse con acciones.

resource "null_resource" "my_placeholder" {
  # This resource exists in state but performs no action.
  # It's ready to attach provisioners or triggers.
}

Provisioners con null_resource

La verdadera potencia de null_resource aparece al combinarlo con provisioners.

Los provisioners permiten ejecutar scripts o comandos en la máquina que ejecuta Terraform (local-exec) o en el propio recurso remoto (remote-exec, aunque es menos habitual con null_resource).

Esto permite que null_resource se convierta en un ejecutor de acciones.

Introducción a los triggers

triggers es un mapa de pares clave-valor arbitrarios definidos dentro de un bloque null_resource.

Su objetivo es indicar a Terraform: «Si cambia cualquier valor de este mapa, es necesario volver a ejecutar este null_resource y sus provisioners».

Esto es fundamental para que null_resource responda a los cambios en su infraestructura.

Cómo funcionan los triggers

Cuando cambia un valor del mapa triggers, Terraform detecta una modificación en null_resource.

Durante un terraform apply, Terraform hará lo siguiente:

  • Destruirá el null_resource existente (si lo hay).
  • Volverá a crear el null_resource.
  • Volverá a ejecutar los provisioners asociados.

Este mecanismo garantiza que las acciones personalizadas se ejecuten únicamente cuando cambien las dependencias relevantes.

Ejemplo: triggers y local-exec

Aquí usamos un null_resource para simular la actualización de un archivo de configuración basándonos en una variable sencilla. El provisioner local-exec ejecuta un comando, y triggers garantiza que vuelva a ejecutarse si cambia var.app_version.

variable "app_version" {
  description = "The version of the application."
  type        = string
  default     = "1.0.0"
}

resource "null_resource" "update_config_file" {
  triggers = {
    version_change = var.app_version
  }

  provisioner "local-exec" {
    command = "echo 'Config updated for version: ${self.triggers.version_change}' > app_config.txt"
  }
}

Prácticas recomendadas y alternativas

Aunque es potente, use null_resource con criterio:

  • Prefiera los proveedores: Si existe un proveedor o recurso de Terraform específico para una tarea, utilícelo en su lugar.
  • Manténgalo idempotente: Asegúrese de que los scripts ejecutados por los provisioners puedan volver a ejecutarse varias veces de forma segura y sin efectos secundarios.
  • Evite gestionar el estado: No intente gestionar el estado externo con null_resource; para eso existen los backends de estado remoto.
  • Considere la fuente de datos external: Para lógica externa compleja que devuelve datos estructurados, la fuente de datos external puede ser una alternativa más limpia.

Comprobación rápida: recursos null

Ha aprendido sobre null_resource y triggers. Compruebe ahora sus conocimientos.

Resumen: Null y triggers

En esta lección, ha descubierto la versatilidad de null_resource de Terraform, una herramienta potente para ejecutar comandos y scripts personalizados que no se corresponden con recursos concretos de la nube.

También ha aprendido sobre triggers, un mecanismo de null_resource que permite definir dependencias y garantizar que los provisioners se vuelvan a ejecutar cada vez que cambien dichas dependencias. Esto permite crear automatizaciones personalizadas, dinámicas y reactivas dentro de su IaC.

Preguntas frecuentes

¿La lección «Recursos nulos y triggers» es gratis?

Sí — el texto completo de «Recursos nulos y triggers» 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 «Recursos nulos y triggers»?

Descubra `null_resource` para ejecutar comandos arbitrarios que no corresponden a un recurso real en la nube, y use triggers para controlar cuándo se ejecutan los provisionadores. 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 3 de 4.

¿Cuánto tiempo toma la lección «Recursos nulos y triggers»?

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