Concepts et configuration de Terraform

LinuxBeginner
Pratiquer maintenant

Introduction

Bienvenue dans le monde de l’Infrastructure as Code (IaC).

Imaginez que vous êtes chef cuisinier dans un restaurant très fréquenté. Traditionnellement, vous pourriez préparer chaque plat à la main, étape par étape. Dans le monde informatique, cela revient à configurer manuellement les serveurs un par un : c’est lent et source d’erreurs.

Au lieu de configurer l’infrastructure manuellement à l’aide de commandes répétées ou de clics dans une console cloud, l’IaC vous permet de décrire l’infrastructure dans des fichiers qui peuvent être versionnés, relus et réutilisés.

Terraform est l’un des outils d’IaC les plus utilisés. Il est déclaratif : vous décrivez l’état final souhaité, puis Terraform détermine comment l’atteindre.

Ce modèle déclaratif est l’une des idées fondamentales de Terraform. Vous décrivez l’infrastructure qui doit exister, et non l’ensemble du script impératif détaillant chaque étape de bas niveau nécessaire à sa création.

Dans cet atelier, vous allez préparer votre « cuisine » et apprendre à votre robot sa première compétence. Vous découvrirez les Providers, qui correspondent aux outils de cuisine spécifiques dont le robot a besoin pour accéder à différents ingrédients, comme AWS, Google Cloud ou Docker.

À la fin de cet atelier, Terraform sera installé, votre premier fichier de « recette » sera créé et l’environnement sera prêt pour commencer à construire.

Installer Terraform

Nous devons installer le programme terraform. Considérez cette étape comme le téléchargement du cerveau du robot. Nous allons effectuer l’installation manuellement afin que vous puissiez voir clairement d’où vient le programme et où il est stocké.

Commencez par vérifier le répertoire de travail actuel. Vous devez vous trouver dans le dossier du projet.

pwd

Téléchargez ensuite le paquet Terraform depuis Internet. Nous utilisons la commande wget pour récupérer une version précise (1.14.3), afin de garantir le bon déroulement de cet atelier.

wget https://releases.hashicorp.com/terraform/1.14.3/terraform_1.14.3_linux_amd64.zip

Le fichier téléchargé est une archive compressée au format « zip », comparable à une valise contenant notre outil. Ouvrez-la à l’aide de la commande unzip.

unzip terraform_1.14.3_linux_amd64.zip

Le programme terraform est maintenant disponible, mais il se trouve uniquement dans ce dossier. Nous voulons pouvoir l’exécuter depuis n’importe quel emplacement du système, comme les commandes standard ls ou cd.

Pour cela, déplacez-le dans le répertoire système spécial /usr/local/bin. Ce répertoire fonctionne comme une boîte à outils publique que le système consulte toujours lorsque vous saisissez une commande.

sudo mv terraform /usr/local/bin/

Vérifiez enfin l’installation en affichant la version de Terraform.

terraform -version

La sortie doit indiquer Terraform v1.14.3.

Supprimez l’archive zip téléchargée afin de conserver un espace de travail propre :

rm terraform_1.14.3_linux_amd64.zip

Créer le plan d’infrastructure

Terraform a besoin d’un plan d’infrastructure pour savoir quoi construire. Ces plans sont écrits dans des fichiers texte dont l’extension est .tf.

Dans cette étape, vous allez créer le fichier de configuration principal. Par convention, le fichier principal s’appelle généralement main.tf. Considérez-le comme la page principale de votre livre de recettes.

Créez un fichier nommé main.tf dans le répertoire ~/project. Vous pouvez commencer par créer un fichier vide avec la commande touch.

touch main.tf

Vérifiez que le fichier a bien été créé :

ls -l main.tf

À ce stade, le fichier est vide. Vous lui ajouterez du contenu à l’étape suivante. Il servira de plan d’infrastructure.

Configurer un fournisseur

Maintenant que le fichier main.tf existe, vous devez y ajouter des instructions.

Terraform est un outil polyvalent. Par défaut, il ne sait pas communiquer avec Docker, AWS ou Azure. Vous devez lui présenter un Provider, qui joue le rôle de traducteur. Il apprend à Terraform le langage spécifique de la plateforme que vous souhaitez gérer. Ici, vous voulez gérer des conteneurs Docker : vous avez donc besoin du fournisseur Docker.

Cette séparation entre le moteur principal et les plugins des fournisseurs permet d’utiliser le même modèle de travail Terraform pour gérer de nombreux systèmes d’infrastructure différents.

Ouvrez main.tf avec l’éditeur de texte nano.

nano main.tf

Copiez et collez le code suivant dans le fichier. La première partie, le bloc terraform, indique précisément à Terraform quel plugin de traduction télécharger. La deuxième partie, le bloc provider, active ce plugin.

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.0.1"
    }
  }
}

provider "docker" {}

Après avoir collé le code, enregistrez vos modifications et quittez l’éditeur. Appuyez sur Ctrl + O pour écrire le fichier, appuyez sur Enter pour confirmer le nom du fichier, puis appuyez sur Ctrl + X pour quitter.

Cette configuration indique à Terraform : « Je souhaite utiliser le fournisseur Docker, plus précisément la version 3.0.1 ou une version compatible. »

Initialiser le projet

L’outil est installé et le plan d’infrastructure est écrit, mais Terraform n’est pas encore tout à fait prêt. Il a détecté dans votre main.tf que vous avez besoin du traducteur « Docker » (le plugin), mais il ne l’a pas encore téléchargé.

Vous devez exécuter la commande init. Considérez cette étape comme la « préparation de l’atelier ». Terraform va lire votre plan d’infrastructure, identifier les outils manquants et les télécharger automatiquement dans un répertoire caché.

terraform init est donc une étape d’amorçage du projet, et non une étape de modification de l’infrastructure. Elle prépare le répertoire de travail afin que les commandes suivantes puissent interpréter correctement la configuration.

Exécutez la commande d’initialisation :

terraform init

Vous devriez obtenir une sortie semblable à celle-ci :

Initializing the backend...

Initializing provider plugins...
- Finding kreuzwerker/docker versions matching "~> 3.0.1"...
- Installing kreuzwerker/docker v3.0.2...
- Installed kreuzwerker/docker v3.0.2 (self-signed, key ID 24E54F214539BC63)

Terraform has been successfully initialized!

Cette commande a créé un répertoire caché nommé .terraform dans le dossier de votre projet. Terraform y stocke les plugins de fournisseurs téléchargés.

Vérifiez que ce répertoire existe en listant tous les fichiers, y compris les fichiers cachés :

ls -a

Vous devriez voir .terraform et .terraform.lock.hcl. Le fichier de verrouillage garantit que les exécutions futures utilisent exactement les mêmes versions des fournisseurs, ce qui assure la cohérence.

Résumé

Félicitations ! Vous avez configuré votre environnement Terraform avec succès.

Dans cet atelier, vous avez appris :

  • Installation : placer le binaire Terraform dans le chemin système (/usr/local/bin).
  • Configuration : créer un fichier main.tf, qui sert de plan d’infrastructure.
  • Providers : des « traducteurs » spécifiques qui permettent à Terraform de communiquer avec différentes plateformes, comme Docker.
  • Initialisation : utiliser terraform init pour télécharger les plugins nécessaires avant de commencer à travailler.

Vous êtes maintenant prêt à définir de véritables ressources et à construire une infrastructure dans l’atelier suivant.