0Pricing
Terraform Infrastructure as Code · Lección

Uso de datos externos y plantillas

Incorpore valores dinámicos en Terraform con la fuente de datos external y genere archivos de configuración mediante la función templatefile.

Uso de datos externos y plantillas es una lección gratuita de Terraform Infrastructure as Code en CoddyKit. Esta es la lección 4 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 Terraform Infrastructure as Code, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

Más allá de las fuentes de datos integradas

Ya consulta AWS con fuentes de datos. A veces los datos que necesita se encuentran fuera de cualquier proveedor, como la salida de un script de shell o de una API interna. La fuente de datos external y las funciones de template cubren esta necesidad.

La fuente de datos external

La fuente de datos external ejecuta un programa y lee JSON desde su salida estándar. Es una vía de escape para la lógica que Terraform no puede expresar de forma nativa.

data "external" "git_sha" {
  program = ["bash", "./scripts/git_sha.sh"]
}

El contrato del programa

El programa externo recibe un objeto JSON mediante stdin y debe imprimir en stdout un objeto JSON plano cuyos valores sean cadenas. Cualquier otra cosa es un error.

#!/bin/bash
echo '{"sha": "abc123"}'

Lectura de resultados externos

Acceda a los valores devueltos mediante el mapa result. Todos los valores son cadenas, así que conviértalos si necesita otro tipo.

resource "aws_instance" "app" {
  ami           = "ami-0abcd1234"
  instance_type = "t3.micro"

  tags = {
    GitSha = data.external.git_sha.result.sha
  }
}

Cuándo evitar external

La fuente external se ejecuta en cada plan y perjudica la reproducibilidad si el script no es determinista. Prefiera una fuente de datos real del proveedor cuando exista; reserve external para necesidades que realmente no estén cubiertas.

Renderización de archivos con templatefile

La función templatefile lee una plantilla, sustituye variables y devuelve una cadena. Es perfecta para los datos de usuario de cloud-init y los archivos de configuración.

resource "aws_instance" "web" {
  ami           = "ami-0abcd1234"
  instance_type = "t3.micro"
  user_data = templatefile("init.tftpl", {
    hostname = "web-01"
  })
}

Sintaxis de las plantillas

Dentro de un archivo .tftpl, interpole valores con la sintaxis de dólar y llaves. Terraform sustituye las variables proporcionadas.

#!/bin/bash
hostnamectl set-hostname ${hostname}
echo 'Provisioned by Terraform'

Bucles en plantillas

Las plantillas admiten directivas de iteración. Una directiva for genera líneas repetidas, lo que resulta práctico para generar listas de hosts.

%{ for ip in ips ~}
server ${ip}:8080
%{ endfor ~}

Plantillas insertadas con templatestring

Para fragmentos breves, puede omitir un archivo y usar templatestring (o el format anterior) para crear cadenas dinámicas directamente en la configuración.

locals {
  greeting = templatestring("Hello, $${name}!", { name = "Ops" })
}

Combinación de ambas

Un patrón habitual es que una fuente external obtenga un valor dinámico y que después templatefile lo inserte en una configuración renderizada como datos de usuario.

user_data = templatefile("app.tftpl", {
  version = data.external.git_sha.result.sha
})

Mantener la renderización idempotente

Dado que los cambios en user_data fuerzan la sustitución de la instancia, mantenga estables las entradas de la plantilla. Proporcionar un valor que cambia constantemente, como una marca de tiempo, recreará las instancias en cada ejecución de apply.

Comprobación rápida

Compruebe su comprensión de la fuente de datos external.

Resumen: entradas dinámicas y plantillas

Ha ampliado las capacidades de datos de Terraform:

  • La fuente external ejecuta scripts que devuelven JSON.
  • templatefile renderiza archivos de configuración y de datos de usuario.
  • Las directivas de plantilla admiten bucles e interpolación.
  • Mantenga estables las entradas para evitar sustituciones no deseadas.

Preguntas frecuentes

¿La lección «Uso de datos externos y plantillas» es gratis?

Sí — el texto completo de «Uso de datos externos y plantillas» 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 Terraform Infrastructure as Code, actualiza a CoddyKit PRO. El curso de Terraform Infrastructure as Code incluye 4 lecciones en total.

¿Qué aprenderé en «Uso de datos externos y plantillas»?

Incorpore valores dinámicos en Terraform con la fuente de datos external y genere archivos de configuración mediante la función templatefile. Practicas Terraform Infrastructure as Code 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 Terraform Infrastructure as Code?

No se requiere experiencia previa. Terraform Infrastructure as Code 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 4 de 4.

¿Cuánto tiempo toma la lección «Uso de datos externos y plantillas»?

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 Terraform Infrastructure as Code?

Sí. Cada lección de Terraform Infrastructure as Code 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 Terraform Infrastructure as Code