Qu’est-ce que Terraform ?
Terraform est un outil open-source d’Infrastructure as Code (IaC) développé par HashiCorp. Il permet de définir, provisionner et gérer des infrastructures — serveurs, réseaux, bases de données, services cloud — à l’aide de fichiers de configuration déclaratifs écrits en HCL (HashiCorp Configuration Language).
L’idée centrale est simple : décrire l’état souhaité de votre infrastructure dans du code, et laisser Terraform calculer et appliquer les changements nécessaires pour atteindre cet état.
Cas d’utilisation typiques
- Provisionning cloud : créer des VMs, VPC, load balancers, DNS sur AWS/GCP/Azure
- Self-hosting : déployer des serveurs sur OVH, Hetzner, Scaleway depuis du code
- Gestion Kubernetes : créer des clusters EKS, GKE, AKS et configurer les namespaces
- Sécurité : gérer les IAM, politiques d’accès, certificats TLS de façon auditée
- Infrastructure éphémère : créer et détruire des environnements de test automatiquement
Dans un parcours RNCP DevOps / Administration Systèmes, maîtriser Terraform est un attendu.
Installer Terraform se présente généralement comme une courte séquence de commandes copiées depuis la documentation officielle. Cette approche fonctionne pour une mise en place rapide, mais elle trouve vite ses limites quand l’objectif est de construire quelque chose de réutilisable, portable et plus sûr à exécuter sur différents environnements.
Ce travail a consisté à transformer le flux d’installation en un script d’automatisation pratique, avec une vraie démarche d’implémentation : détecter la plateforme hôte, utiliser le chemin d’installation adapté, valider les sources de confiance sur les systèmes Debian, vérifier l’installation résultante, et proposer un moyen simple d’installer ou désinstaller Terraform directement depuis un GitHub Gist.
Points d’entrée de l’installation
curl -fsSL "https://gist.githubusercontent.com/sony-level/cc042b1e61aef2165ff192cf43f738db/raw/install-terraform.sh" \
-o /tmp/install-terraform.sh && \
bash /tmp/install-terraform.sh
wget -qO /tmp/install-terraform.sh \
"https://gist.githubusercontent.com/sony-level/cc042b1e61aef2165ff192cf43f738db/raw/install-terraform.sh" && \
bash /tmp/install-terraform.sh

Désinstaller Terraform
curl -fsSL "https://gist.githubusercontent.com/sony-level/cc042b1e61aef2165ff192cf43f738db/raw/uninstall-terraform.sh" \
-o /tmp/uninstall-terraform.sh && \
bash /tmp/uninstall-terraform.sh
wget -qO /tmp/uninstall-terraform.sh \
"https://gist.githubusercontent.com/sony-level/cc042b1e61aef2165ff192cf43f738db/raw/uninstall-terraform.sh" && \
bash /tmp/uninstall-terraform.sh
Mode strict et gestion des erreurs
Le script commence par :
#!/usr/bin/env bash
set -Eeuo pipefail
C’est une base importante pour la fiabilité.
-estoppe l’exécution dès qu’une commande échoue.-uempêche l’utilisation silencieuse de variables non définies.pipefailgarantit que les échecs dans un pipeline ne sont pas masqués par une commande suivante réussie.- Le trap
ERRfournit un message d’erreur cohérent avec la localisation et le code de sortie.
Cela compte parce que les scripts d’installation s’exécutent souvent avec des privilèges élevés ou dans des contextes d’automatisation. Les échecs silencieux sont l’un des moyens les plus rapides d’introduire des états système incohérents.
Détection de plateforme
Une partie centrale du script est la détection de plateforme. Plutôt que de supposer un comportement uniquement Linux, le script détecte l’environnement d’exécution et dispatch l’installation en conséquence.
platform="$(detect_platform)"
case "$platform" in
macos)
install_macos
;;
linux)
install_linux
;;
windows_like)
install_windows_choco
;;
*)
die "Système d'exploitation non supporté."
;;
esac
Cette logique de branchement est simple, mais c’est le fondement de tout le script.
Logs et lisibilité opérationnelle
La couche de logging est intentionnellement légère mais utile. Chaque message inclut un timestamp, un niveau de sévérité, le nom du script et un message lisible.
[2026-03-17 09:39:22] [INFO] [install-terraform.sh] Démarrage de l'installation Terraform...
De bons logs sont l’un des signes les plus clairs qu’un script a été écrit pour être utilisé de manière répétée et pas seulement une fois par son auteur.
Pourquoi la publication en Gist est importante
Publier le script via un GitHub Gist ajoute une couche de distribution pratique :
- récupération rapide via une URL brute
- exécution avec
curlouwget - partage facile entre équipes ou environnements
- suivi de version via Git
- clonage local et mises à jour comme un petit dépôt
Cela transforme le script d’un utilitaire local en un artefact documenté et réutilisable. Cela facilite aussi l’itération : mettre à jour localement, commiter, pousser — et le point d’entrée d’installation reste simple pour les utilisateurs.
Un résultat d’ingénierie pratique
Ce travail est un bon exemple de la façon dont de petites tâches d’automatisation peuvent devenir des artefacts techniques significatifs lorsqu’elles sont implémentées avec soin.
Ce qui a commencé comme un flux d’installation Terraform est devenu un outil plus structuré avec :
- comportement adapté à la plateforme
- mode strict et gestion centralisée des erreurs
- logs horodatés et lisibles
- distribution via un GitHub Gist
C’est un pattern utile en DevOps et en travail système : prendre une tâche opérationnelle répétitive, la formaliser, la valider et la packager de façon à ce que d’autres personnes puissent réellement l’utiliser.
Ressources
| Ressource | Lien |
|---|---|
| Documentation officielle Terraform | developer.hashicorp.com/terraform |
| Gist complet | gist.github.com/sony-level |
