eadl:bloc4:fm2:td1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
eadl:bloc4:fm2:td1 [2026/04/25 11:41] – [5. Lecture globale] jcheroneadl:bloc4:fm2:td1 [2026/04/25 13:41] (Version actuelle) jcheron
Ligne 7: Ligne 7:
   * Manipuler Terraform et Ansible sur un exemple simple   * Manipuler Terraform et Ansible sur un exemple simple
  
-===== 1. Préparation de l’environnement =====+===== Contexte =====
  
-==== 1.1 Prérequis ====+Vous intégrez une équipe DevOps.
  
-  Linux / macOS / WSL recommandé +Actuellement : 
-  * Docker installé +  les développeurs lancent des conteneurs manuellement 
-  * Accès terminal+  * les configurations sont faites "à la main" 
 +  * les environnements sont incohérents
  
-==== 1.2 Installation de Terraform ====+Problèmes :
  
-Vérification des packages : +  * erreurs humaines fréquentes 
-<sxh bash;gutter:false> +  * impossible de reproduire un environnement 
-sudo apt-get update && sudo apt-get install -y gnupg software-properties-common +  * perte de temps en debug
-</sxh>+
  
-Installer la clé HashiCorp's GPG +Objectif :
-<sxh bash;gutter:false> +
-wget -O- https://apt.releases.hashicorp.com/gpg | \ +
-gpg --dearmor | \ +
-sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg > /dev/null +
-</sxh>+
  
-Ajouter le dépôt HashiCorp +Automatiser 
-<sxh bash;gutter:false> +  * la création d’un service web (Terraform) 
-echo "deb [arch=$(dpkg --print-architecturesigned-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list +  * sa configuration (Ansible)
-</sxh>+
  
-Installer : +===== 1. Préparation de l’environnement =====
-<sxh bash;gutter:false> +
-sudo apt update +
-sudo apt-get install terraform +
-</sxh>+
  
-Vérification :+==== 1.1 Prérequis ====
  
-<sxh bash;gutter:false> +  * Linux / macOS / WSL recommandé 
-terraform version +  * Docker installé 
-</sxh>+  * Accès terminal
  
-==== 1.3 Installation d’Ansible ====+==== 1.2 Vérification outils ====
  
-Sur Ubuntu / Debian :+<WRAP round todo> 
 +Vérifier :
  
-<sxh bash;gutter:false> +  * terraform version 
-sudo apt update +  ansible --version 
-sudo apt install ansible -y +  * docker --version 
-</sxh>+</WRAP>
  
-Vérification :+<WRAP round help> 
 +Question :
  
-<sxh bash;gutter:false> +  * Pourquoi est-il important de versionner ses outils en DevOps ? 
-ansible --version +</WRAP>
-</sxh> +
- +
-==== 1.4 Vérification Docker ==== +
- +
-<sxh> +
-docker --version +
-docker run hello-world +
-</sxh>+
  
 ===== 2. Arborescence du projet ===== ===== 2. Arborescence du projet =====
  
-Créer un dossier de travail :+Fichier terminal
  
-<sxh>+<sxh bash;gutter:false>
 mkdir iac-demo mkdir iac-demo
 cd iac-demo cd iac-demo
 +mkdir terraform ansible
 </sxh> </sxh>
  
 Structure : Structure :
  
-<sxh ;gutter:false>+<sxh;gutter:false>
 iac-demo/ iac-demo/
 ├── terraform/ ├── terraform/
Ligne 88: Ligne 73:
 </sxh> </sxh>
  
-===== 3. Exemple Terraform =====+===== 3. Création de l’infrastructure avec Terraform =====
  
 ==== 3.1 Objectif ==== ==== 3.1 Objectif ====
  
-Créer un conteneur NGINX avec Terraform+Créer un conteneur NGINX
  
-==== 3.2 Fichier main.tf ====+==== 3.2 Configuration ====
  
-Chemin :+Fichier ''terraform/main.tf''
  
-terraform/main.tf +<sxh js>
- +
-Contenu : +
- +
-<sxh>+
 terraform { terraform {
   required_providers {   required_providers {
Ligne 123: Ligne 104:
 } }
 </sxh> </sxh>
- 
  
 ==== 3.3 Exécution ==== ==== 3.3 Exécution ====
  
-Depuis le dossier terraform :+Fichier terminal
  
-<sxh>+<sxh bash;gutter:false>
 cd terraform cd terraform
 terraform init terraform init
Ligne 135: Ligne 115:
 </sxh> </sxh>
  
- +<WRAP round todo>
-<WRAP todo>+
 Validation : Validation :
  
Ligne 142: Ligne 121:
 </WRAP> </WRAP>
  
-Vérification du state créé+==== 3.4 Observation =====
  
-<sxh;gutter:false>+Fichier : terminal 
 + 
 +<sxh bash;gutter:false>
 terraform state list terraform state list
 </sxh> </sxh>
-===== 4. Exemple Ansible ===== 
  
-==== 4.1 Objectif ====+<WRAP round help> 
 +Questions :
  
-Configurer un système local avec Ansible +  * Que contient le state ? 
- +  * Pourquoi Terraform en a besoin ? 
-==== 4.2 Fichier inventory ====+</WRAP>
  
-Chemin :+===== 4. Configuration avec Ansible =====
  
-ansible/inventory.ini+==== 4.1 Inventory ====
  
-Contenu :+Fichier ''ansible/inventory.ini''
  
 <sxh> <sxh>
Ligne 165: Ligne 146:
 </sxh> </sxh>
  
-==== 4.3 Fichier playbook.yml ====+==== 4.2 Playbook ====
  
-Chemin : +Fichier ''ansible/playbook.yml''
- +
-ansible/playbook.yml +
- +
-Contenu :+
  
 <sxh yaml> <sxh yaml>
Ligne 182: Ligne 159:
         dest: /tmp/index.html         dest: /tmp/index.html
         content: |         content: |
-          <html> +          <h1>IaC avec Ansible</h1>
-          <head> +
-            <meta charset="UTF-8"> +
-            <title>Déploiement avec Ansible</title> +
-          </head> +
-          <h1>Déploiement avec Ansible</h1+
-          <p>IaC en action</p> +
-          </html>+
  
     - name: copier la page dans le conteneur nginx     - name: copier la page dans le conteneur nginx
Ligne 195: Ligne 165:
 </sxh> </sxh>
  
-==== 4.Exécution ====+==== 4.Exécution ====
  
-Depuis le dossier ansible :+Fichier terminal
  
 <sxh bash;gutter:false> <sxh bash;gutter:false>
 cd ../ansible cd ../ansible
-ansible-playbook -i inventory playbook.yml+ansible-playbook -i inventory.ini playbook.yml
 </sxh> </sxh>
  
- +<WRAP round todo>
-<WRAP todo>+
 Validation : Validation :
  
-  * Ouvrir http://localhost:8090+  * Rafraîchir http://localhost:8090
 </WRAP> </WRAP>
-===== 5. Lecture globale ===== 
  
-Terraform :+===== 5. Problème volontaire =====
  
-  * crée une ressource (conteneur+Modifier le nom du conteneur dans Terraform :
-  * via API (Docker ici)+
  
-Ansible :+Fichier ''terraform/main.tf''
  
-  * configure un système +<sxh js;gutter:false> 
-  * exécute des tâches+name = "mon_nginx_v2" 
 +</sxh>
  
-<WRAP info> +Relancer :
-Contrairement à Terraform, Ansible ne maintient pas un fichier d’état centralisé.+
  
-Cependant, Ansible est conçu pour être idempotent +<sxh bash;gutter:false> 
-il vérifie l’état du système avant d’appliquer des changements, +terraform apply 
-et n’exécute une action que si nécessaire.+</sxh>
  
-**Terraform**+Puis rejouer Ansible :
  
-  * sait ce qu’il a créé → grâce au state +<sxh bash;gutter:false> 
-  * compare état actuel vs état désiré+ansible-playbook -i inventory.ini playbook.yml 
 +</sxh>
  
 +<WRAP round help>
 +Questions :
  
-**Ansible**+  Que se passe-t-il ? 
 +  Pourquoi Ansible échoue ? 
 +  Quel outil est responsable du problème ? 
 +</WRAP>
  
-  * ne stocke rien +===== 6. Correction ===== 
-  * regarde directement le système cible + 
-  * agit seulement si besoin (si modules bien utilisés)+Corriger le playbook pour utiliser le bon nom de conteneur. 
 + 
 +<WRAP round help> 
 +Question : 
 + 
 +  * Comment éviter ce type de problème en production ?
 </WRAP> </WRAP>
-===== 6. Nettoyage ===== 
  
-Terraform :+===== 7. Compréhension globale =====
  
-<sxh;gutter:false+<WRAP round help
-cd ../terraform +  * Quelle est la différence entre déclaratif et procédural ? 
-terraform destroy +  * Pourquoi séparer Terraform et Ansible ? 
-</sxh>+  * Que se passe-t-il si on relance Terraform plusieurs fois ? 
 +</WRAP>
  
-===== 7Points importants =====+===== 8Extension =====
  
-  Terraform est déclaratif +<WRAP round todo> 
-  * Ansible est procédural +Modifier : 
-  * Les deux outils sont complémentaires+ 
 +  le port (ex: 8085) 
 +  * le contenu HTML 
 +</WRAP> 
 + 
 +===== 9. Challenge ===== 
 + 
 +<WRAP round todo> 
 +Créer un deuxième conteneur : 
 + 
 +  * nom : nginx_test 
 +  * port : 8091 
 +</WRAP>
  
-===== 8Question =====+===== 10Points clés =====
  
-Pourquoi séparer la création d’infrastructure et la configuration logicielle ?+  * Terraform → provisioning 
 +  * Ansible → configuration 
 +  * séparation des responsabilités 
 +  * reproductibilité
  
  • eadl/bloc4/fm2/td1.txt
  • Dernière modification : il y a 4 jours
  • de jcheron