eadl:bloc4:fm2:intro

Introduction à l'Infrastructure as Code (IaC)

À la fin de cette séance, vous serez capable de :

  • Comprendre les limites de la gestion manuelle d’infrastructure
  • Expliquer le concept d’Infrastructure as Code
  • Distinguer approche déclarative et impérative
  • Comprendre le rôle de Terraform et Ansible dans un workflow réel

Vous arrivez dans une entreprise.

Un développeur vous dit :

"Pour lancer l’environnement :
 - démarre un conteneur
 - ouvre le port 8080
 - copie les fichiers à la main"

Un autre développeur fait différemment.

Résultat :

  • environnements différents
  • bugs difficiles à reproduire
  • perte de temps

Question :

  • Quel est le principal problème ici ?

En pratique, sans automatisation :

  • actions manuelles (console, SSH)
  • dépend de la personne
  • pas versionné

Exemples concrets :

  • un port ouvert “temporairement” jamais refermé
  • configuration différente entre dev et prod
  • perte d’informations lors d’un redéploiement

Question :

  • Pourquoi ces problèmes sont difficiles à corriger ?

Objectif :

Comprendre la difficulté de reproduire un environnement sans automatisation

Fichier : terminal

docker run -d -p 8081:80 --name test_nginx nginx

Validation :

Fichier : terminal

echo "<h1>Version 1</h1>" > index.html
docker cp index.html test_nginx:/usr/share/nginx/html/index.html

Validation :

  • Rafraîchir la page

Fichier : terminal

docker rm -f test_nginx
docker run -d -p 8081:80 --name test_nginx nginx

Questions :

  • Que s’est-il passé ?
  • Pourquoi la modification a disparu ?
  • Seriez-vous capable de refaire exactement la même configuration ?

Sans automatisation :

  • les modifications sont perdues
  • rien n’est tracé
  • difficile à reproduire

Question :

  • Comment éviter ce problème dans une équipe ?

Principe :

  • décrire l’infrastructure avec du code
  • versionner ce code (Git)
  • exécuter automatiquement

Analogie :

  • avant : configuration “à la main”
  • après : recette écrite et reproductible

Objectif :

  • obtenir un serveur web fonctionnel

Sans IaC :

  • commandes manuelles
  • étapes non tracées

Avec IaC :

  • fichier Terraform → crée le serveur
  • playbook Ansible → configure le serveur

Résultat :

  • reproductible
  • automatisé
  • partagé avec l’équipe

On décrit les étapes :

  • installer nginx
  • démarrer le service

Limite :

  • dépend de l’état initial

On décrit le résultat :

  • “je veux un serveur web”

L’outil gère les actions nécessaires

Question :

  • Pourquoi cette approche est-elle adaptée au cloud ?

Terraform :

  • crée l’infrastructure
  • maintient un état (state)

Ansible :

  • configure les systèmes
  • exécute des tâches

Exemple :

  • Terraform → crée un conteneur
  • Ansible → modifie son contenu
  • Terraform → infrastructure
  • Ansible → configuration
  • pipeline → déploiement applicatif

Chaîne :

Code → Infrastructure → Configuration → Application

Dans le TD suivant :

  • vous allez automatiser ce que vous venez de faire manuellement
  • créer un service avec Terraform
  • le modifier avec Ansible

Objectif :

  • comprendre la complémentarité des outils
  • IaC = infrastructure gérée comme du code
  • objectif : reproductibilité et fiabilité
  • Terraform → provisioning
  • Ansible → configuration
  • eadl/bloc4/fm2/intro.txt
  • Dernière modification : il y a 4 jours
  • de jcheron