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 DevOps Bootcamp 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 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.
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
externalejecuta scripts que devuelven JSON. templatefilerenderiza 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 DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp 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 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 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 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
- Consulta de datos con fuentes de datos
- Provisionadores local-exec y remote-exec
- Recursos nulos y triggers
- Uso de datos externos y plantillas