Utiliser des données externes et des modèles
Importez des valeurs dynamiques dans Terraform avec la source de données external et générez des fichiers de configuration à l’aide de la fonction templatefile.
Utiliser des données externes et des modèles est une leçon Terraform Infrastructure as Code gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Terraform Infrastructure as Code, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Terraform Infrastructure as Code comprend 4 leçons au total.
Au-delà des sources de données intégrées
Vous interrogez déjà AWS avec des sources de données. Parfois, les données dont vous avez besoin se trouvent en dehors de tout fournisseur, par exemple dans la sortie d’un script shell ou d’une API interne. La source de données external et les fonctions template comblent cette lacune.
La source de données external
La source de données external exécute un programme et lit du JSON depuis sa sortie standard. C’est une solution de secours pour la logique que Terraform ne peut pas exprimer nativement.
data "external" "git_sha" {
program = ["bash", "./scripts/git_sha.sh"]
}Le contrat du programme
Le programme externe reçoit un objet JSON sur l’entrée standard et doit afficher sur la sortie standard un objet JSON plat dont les valeurs sont des chaînes. Tout autre résultat constitue une erreur.
#!/bin/bash
echo '{"sha": "abc123"}'Lire les résultats externes
Accédez aux valeurs renvoyées via la table result. Chaque valeur est une chaîne ; effectuez donc une conversion si vous avez besoin d’un autre type.
resource "aws_instance" "app" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
tags = {
GitSha = data.external.git_sha.result.sha
}
}Quand éviter external
La source external s’exécute à chaque plan et compromet la reproductibilité si le script est non déterministe. Préférez une véritable source de données du fournisseur lorsqu’elle existe ; réservez external aux lacunes réelles.
Générer des fichiers avec templatefile
La fonction templatefile lit un modèle, substitue les variables et renvoie une chaîne. Elle est idéale pour les données utilisateur de cloud-init et les fichiers de configuration.
resource "aws_instance" "web" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
user_data = templatefile("init.tftpl", {
hostname = "web-01"
})
}Syntaxe des modèles
Dans un fichier .tftpl, interpolez les valeurs avec la syntaxe dollar-accolade. Terraform substitue les variables transmises.
#!/bin/bash
hostnamectl set-hostname ${hostname}
echo 'Provisioned by Terraform'Boucles dans les modèles
Les modèles prennent en charge des directives d’itération. Une directive for génère des lignes répétées, ce qui est pratique pour créer des listes d’hôtes.
%{ for ip in ips ~}
server ${ip}:8080
%{ endfor ~}Modèles intégrés avec templatestring
Pour de courts extraits, vous pouvez éviter un fichier et utiliser templatestring (ou l’ancien format) afin de créer directement des chaînes dynamiques dans la configuration.
locals {
greeting = templatestring("Hello, $${name}!", { name = "Ops" })
}Combiner les deux
Un schéma courant consiste à utiliser une source external pour récupérer une valeur dynamique, puis templatefile pour l’injecter dans une configuration générée comme données utilisateur.
user_data = templatefile("app.tftpl", {
version = data.external.git_sha.result.sha
})Conserver des rendus idempotents
Comme les modifications de user_data forcent le remplacement d’une instance, gardez les entrées du modèle stables. Fournir une valeur qui change constamment, comme un horodatage, recréera les instances à chaque application.
Vérification rapide
Testez votre compréhension de la source de données external.
Récapitulatif : entrées dynamiques et modèles
Vous avez étendu les capacités de Terraform en matière de données :
- La source
externalexécute des scripts qui renvoient du JSON. templatefilegénère des fichiers de configuration et de données utilisateur.- Les directives de modèle prennent en charge les boucles et l’interpolation.
- Gardez les entrées stables pour éviter les remplacements indésirables.
Questions Fréquemment Posées
La leçon « Utiliser des données externes et des modèles » est-elle gratuite ?
Oui — le texte complet de « Utiliser des données externes et des modèles » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Terraform Infrastructure as Code, passe à CoddyKit PRO. Le cours Terraform Infrastructure as Code comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Utiliser des données externes et des modèles » ?
Importez des valeurs dynamiques dans Terraform avec la source de données external et générez des fichiers de configuration à l’aide de la fonction templatefile. Tu pratiques Terraform Infrastructure as Code avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Terraform Infrastructure as Code ?
Aucune expérience préalable n'est requise. Terraform Infrastructure as Code sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Utiliser des données externes et des modèles » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Terraform Infrastructure as Code ?
Oui. Chaque leçon Terraform Infrastructure as Code inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Interroger des données avec les sources de données
- Provisionneurs local et distant
- Ressources nulles et déclencheurs
- Utiliser des données externes et des modèles