0Pricing
Terraform Infrastructure as Code · Leçon

Interroger des données avec les sources de données

Utilisez des sources de données pour récupérer des informations sur une infrastructure existante ou des services externes, afin de créer des configurations plus dynamiques et adaptatives.

Interroger des données avec les sources de données est une leçon Terraform Infrastructure as Code gratuite sur CoddyKit. Ceci est la leçon 1 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.

Que sont les sources de données ?

Dans Terraform, nous devons souvent faire référence à une infrastructure existante ou à des données externes qui ne sont pas gérées par notre configuration actuelle.

C’est là qu’interviennent les sources de données ! Elles permettent à votre configuration Terraform de récupérer des informations sur des ressources déjà approvisionnées ou sur des services externes.

Sources de données et ressources

Il est important de distinguer les sources de données des ressources.

  • Les ressources définissent l’infrastructure que Terraform va créer, mettre à jour ou supprimer.
  • Les sources de données récupèrent uniquement des informations sur une infrastructure ou des données existantes. Elles ne créent et ne modifient rien.

Considérez-les comme des requêtes en lecture seule concernant votre infrastructure.

Cas d’utilisation pratiques

Les sources de données sont extrêmement utiles pour :

  • Rechercher l’ID d’un Virtual Private Cloud (VPC) existant.
  • Obtenir l’Amazon Machine Image (AMI) la plus récente pour une instance EC2.
  • Récupérer des secrets depuis un service de gestion des secrets.
  • Rechercher des enregistrements DNS ou des configurations réseau.

Elles rendent vos configurations plus dynamiques et réduisent les valeurs codées en dur.

Définir une source de données

Un bloc de source de données ressemble à un bloc de ressource. Il commence par le mot-clé data, suivi du fournisseur et du type, puis d’un nom local.

data "aws_vpc" "selected" {
  filter {
    name   = "tag:Name"
    values = ["my-existing-vpc"]
  }
}

Utiliser les données récupérées

Une fois qu’une source de données a récupéré des informations, ses attributs deviennent disponibles pour les autres parties de votre configuration. Vous pouvez y faire référence avec la syntaxe suivante : data.<TYPE>.<NAME>.<ATTRIBUTE>.

Par exemple, pour obtenir l’ID du VPC que nous avons sélectionné :

output "vpc_id" {
  value = data.aws_vpc.selected.id
}

Récupérer l’AMI la plus récente

Une tâche courante consiste à rechercher l’Amazon Machine Image (AMI) la plus récente pour une instance EC2. Cela évite de coder les ID d’AMI en dur et rend votre configuration plus robuste.

Voici comment récupérer l’AMI Amazon Linux 2 la plus récente :

provider "aws" {
  region = "us-east-1"
}

data "aws_ami" "amazon_linux_2" {
  most_recent = true
  owners      = ["amazon"]

  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-*-x86_64-gp2"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

output "latest_ami_id" {
  value = data.aws_ami.amazon_linux_2.id
}

Document de stratégie S3 dynamique

Les sources de données ne servent pas uniquement aux ressources cloud. La source de données aws_iam_policy_document aide à construire des stratégies IAM complexes de manière structurée.

Elle ne crée pas de stratégie, mais génère le document JSON que vous pouvez ensuite appliquer à une ressource telle qu’un compartiment S3.

provider "aws" {
  region = "us-east-1"
}

data "aws_iam_policy_document" "s3_read_only_policy" {
  statement {
    principals {
      type        = "AWS"
      identifiers = ["arn:aws:iam::123456789012:user/example-user"]
    }
    actions = [
      "s3:GetObject",
      "s3:ListBucket"
    ]
    resources = [
      "arn:aws:s3:::my-example-bucket",
      "arn:aws:s3:::my-example-bucket/*"
    ]
  }
}

output "policy_json" {
  value = data.aws_iam_policy_document.s3_read_only_policy.json
}

Affiner votre recherche

De nombreuses sources de données prennent en charge les blocs filter. Ceux-ci vous permettent de définir des critères pour affiner les résultats et vous assurer de récupérer la ressource ou les données correctes.

Les filtres acceptent généralement un name (l’attribut sur lequel effectuer le filtrage) et des values (une liste de valeurs acceptables pour cet attribut).

data "aws_instance" "web" {
  instance_state_names = ["running"]
  filter {
    name   = "tag:Environment"
    values = ["production"]
  }
  filter {
    name   = "instance-type"
    values = ["t2.micro", "t3.micro"]
  }
}

Bonnes pratiques pour les sources de données

Pour conserver des configurations propres et efficaces :

  • Soyez précis : utilisez des filtres pour récupérer exactement les données dont vous avez besoin et éviter toute ambiguïté.
  • Idempotence : les sources de données sont intrinsèquement idempotentes : leur exécution répétée produit le même résultat.
  • Limitez les appels : ne récupérez les données que lorsque cela est nécessaire afin d’accélérer les opérations terraform plan.
  • Associez-les aux sorties : utilisez des sorties pour exposer les données récupérées dont d’autres configurations ou utilisateurs pourraient avoir besoin.

Quiz sur les sources de données

Lesquelles des affirmations suivantes sont TRUE concernant les sources de données Terraform ?

Résumé : interroger des données

Vous avez appris comment les sources de données Terraform permettent à vos configurations d’interroger et de récupérer des informations sur une infrastructure existante ou des services externes.

Cette fonctionnalité puissante permet de créer des configurations dynamiques, flexibles et robustes en évitant les valeurs codées en dur et en s’adaptant à l’état actuel de votre environnement. N’oubliez pas que les sources de données lisent uniquement les informations : elles ne créent et ne modifient jamais rien !

Questions Fréquemment Posées

La leçon « Interroger des données avec les sources de données » est-elle gratuite ?

Oui — le texte complet de « Interroger des données avec les sources de données » 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 « Interroger des données avec les sources de données » ?

Utilisez des sources de données pour récupérer des informations sur une infrastructure existante ou des services externes, afin de créer des configurations plus dynamiques et adaptatives. 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 1 sur 4.

Combien de temps prend la leçon « Interroger des données avec les sources de données » ?

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

  1. Interroger des données avec les sources de données
  2. Provisionneurs local et distant
  3. Ressources nulles et déclencheurs
  4. Utiliser des données externes et des modèles
← Retour à Terraform Infrastructure as Code