0Pricing
Terraform Infrastructure as Code · Leçon

Provisionneurs local et distant

Mettez en œuvre les provisionneurs `local-exec` et `remote-exec` pour exécuter des commandes sur la machine qui exécute Terraform ou, respectivement, sur les ressources créées.

Provisionneurs local et distant est une leçon Terraform Infrastructure as Code gratuite sur CoddyKit. Ceci est la leçon 2 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.

Découvrez les provisionneurs Terraform

Que faire si vous devez exécuter un script ou une commande après la création d’une ressource par Terraform ? C’est là qu’interviennent les provisionneurs !

Les provisionneurs vous permettent d’exécuter des actions sur la machine locale ou sur une ressource distante dans le cadre de son cycle de vie. Ils font le lien entre la création de l’infrastructure et la configuration initiale des logiciels.

Considérez-les comme des points d’accroche qui vous permettent de personnaliser vos ressources juste après leur création.

`local-exec` : exécuter localement

Le provisionneur local-exec exécute des commandes sur la machine où Terraform est exécuté.

Il est utile pour des tâches telles que :

  • Générer localement des fichiers de configuration.
  • Déclencher des scripts ou des outils locaux.
  • Effectuer des opérations de nettoyage après la destruction d’une ressource.

Il convient parfaitement aux actions qui ne doivent pas être effectuées sur la ressource cloud elle-même.

Exemple de base de `local-exec`

Voyons comment local-exec peut créer un fichier simple sur votre machine locale après la création d’une ressource nulle.

Une null_resource est un espace réservé qui ne crée rien dans le cloud, mais qui est pratique pour déclencher des provisionneurs.

resource "null_resource" "local_file_creator" {
  provisioner "local-exec" {
    command = "echo 'Local file created by Terraform!' > local_output.txt"
  }

  triggers = {
    always_run = timestamp()
  }
}

Quand utiliser `local-exec`

local-exec est idéal pour :

  • Les notifications après déploiement : envoyer un e-mail ou un message Slack.
  • La génération de fichiers locaux : créer des fichiers d’inventaire pour Ansible ou d’autres outils.
  • Les vérifications avant déploiement : exécuter des scripts de validation locaux.
  • Le déclenchement de l’intégration et du déploiement continus : lancer un pipeline après des modifications de l’infrastructure.

N’oubliez pas qu’il s’exécute depuis l’emplacement où vous lancez terraform apply.

`remote-exec` : exécuter sur une ressource

Contrairement à local-exec, le provisionneur remote-exec exécute des commandes directement sur la ressource distante.

Il est essentiel pour les tâches de configuration initiale d’un serveur nouvellement créé, telles que :

  • Installer des paquets logiciels (par exemple, un serveur web ou une base de données).
  • Configurer les paramètres du système d’exploitation.
  • Déployer le code de l’application.

Il nécessite une connectivité réseau (par exemple SSH pour Linux ou WinRM pour Windows) vers la ressource cible.

Se connecter avec `remote-exec`

Pour que remote-exec fonctionne, Terraform doit se connecter à votre ressource.

Les types de connexion courants sont notamment :

  • SSH : pour les instances Linux, avec une clé privée.
  • WinRM : pour les instances Windows, avec des identifiants.

Vous configurerez généralement les détails de connexion dans le bloc provisioner ou les hériterez de la ressource.

`remote-exec` sur une instance EC2

Voici comment utiliser remote-exec pour installer Apache sur une nouvelle instance AWS EC2.

Remarque : cela nécessite qu’une instance EC2 soit approvisionnée et accessible via SSH. Par souci de simplicité, nous supposons qu’une paire de clés et un groupe de sécurité existent déjà.

resource "aws_instance" "web_server" {
  ami           = "ami-0abcdef1234567890" # Replace with valid AMI ID
  instance_type = "t2.micro"
  key_name      = "my-ssh-key" # Replace with your SSH key name
  vpc_security_group_ids = ["sg-0123456789abcdef0"] # Replace with your SG ID

  provisioner "remote-exec" {
    inline = [
      "sudo yum update -y",
      "sudo yum install -y httpd",
      "sudo systemctl start httpd",
      "sudo systemctl enable httpd"
    ]
    connection {
      type        = "ssh"
      user        = "ec2-user"
      private_key = file("~/.ssh/my-ssh-key.pem")
      host        = self.public_ip
    }
  }
}

Quand utiliser `remote-exec`

remote-exec est idéal pour :

  • Initialiser des serveurs : installer des serveurs web, des bases de données ou Docker.
  • Déployer des applications : copier le code de l’application et le configurer.
  • Gérer la configuration : exécuter directement des playbooks Ansible ou des recettes Chef.
  • Valider après la création : vérifier que les services fonctionnent sur la nouvelle instance.

C’est l’outil privilégié pour configurer l’état initial d’un serveur.

Provisionneurs lors de la destruction

Les provisionneurs peuvent également s'exécuter lorsqu'une ressource est en cours de destruction. Cela est utile pour les tâches de nettoyage.

Vous pouvez spécifier when = destroy dans un bloc de provisionneur. Par exemple, pour désenregistrer une instance d'un équilibreur de charge avant sa suppression.

Le comportement de on_failure peut également être configuré afin de déterminer ce qui se passe si une commande de provisionneur échoue. Par défaut, une erreur est générée.

Quiz sur les provisionneurs

Quel provisionneur utiliseriez-vous pour installer un serveur web (comme Nginx) sur une instance de machine virtuelle nouvellement créée ?

Provisionneurs : locaux ou distants

Nous avons étudié les provisionneurs de Terraform, des outils puissants permettant d'exécuter des commandes pendant le cycle de vie d'une ressource.

  • local-exec exécute des commandes sur la machine où Terraform est exécuté, ce qui est utile pour les scripts locaux ou les notifications.
  • remote-exec exécute des commandes directement sur la ressource provisionnée, ce qui convient parfaitement à l'initialisation de serveurs avec des logiciels ou des configurations.

Les provisionneurs contribuent à combler l'écart entre le déploiement de l'infrastructure et la configuration initiale de l'application. Nous allons maintenant découvrir les techniques avancées de gestion de l'état !

Questions Fréquemment Posées

La leçon « Provisionneurs local et distant » est-elle gratuite ?

Oui — le texte complet de « Provisionneurs local et distant » 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 « Provisionneurs local et distant » ?

Mettez en œuvre les provisionneurs `local-exec` et `remote-exec` pour exécuter des commandes sur la machine qui exécute Terraform ou, respectivement, sur les ressources créées. 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 2 sur 4.

Combien de temps prend la leçon « Provisionneurs local et distant » ?

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