From 21ff1970af14aec205b152cc83308b2be9e5dbf3 Mon Sep 17 00:00:00 2001
From: AmirDhe <104517422+AmirDhe@users.noreply.github.com>
Date: Fri, 6 Feb 2026 10:22:13 +0000
Subject: [PATCH 1/8] =?UTF-8?q?Finalisation=20atelier=20:=20Automatisation?=
=?UTF-8?q?=20Packer=20et=20Ansible=20compl=C3=A8te?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Makefile | 20 +++++++
README.md | 141 +++++++++++++++++++-------------------------------
index.html | 61 ++--------------------
nginx.pkr.hcl | 32 ++++++++++++
playbook.yml | 49 ++++++++++++++++++
5 files changed, 157 insertions(+), 146 deletions(-)
create mode 100644 Makefile
create mode 100644 nginx.pkr.hcl
create mode 100644 playbook.yml
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..980de10
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,20 @@
+.PHONY: setup build import deploy check all
+
+setup:
+ ansible-galaxy collection install kubernetes.core
+
+build:
+ packer init nginx.pkr.hcl
+ packer build nginx.pkr.hcl
+
+import:
+ k3d image import my-custom-nginx:v1 -c lab
+
+deploy:
+ ansible-playbook playbook.yml
+
+check:
+ kubectl get pods
+ kubectl get svc
+
+all: setup build import deploy
diff --git a/README.md b/README.md
index adfe016..2538ada 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,57 @@
-------------------------------------------------------------------------------------------------------
-ATELIER FROM IMAGE TO CLUSTER
-------------------------------------------------------------------------------------------------------
-L’idée en 30 secondes : Cet atelier consiste à **industrialiser le cycle de vie d’une application** simple en construisant une **image applicative Nginx** personnalisée avec **Packer**, puis en déployant automatiquement cette application sur un **cluster Kubernetes** léger (K3d) à l’aide d’**Ansible**, le tout dans un environnement reproductible via **GitHub Codespaces**.
-L’objectif est de comprendre comment des outils d’Infrastructure as Code permettent de passer d’un artefact applicatif maîtrisé à un déploiement cohérent et automatisé sur une plateforme d’exécution.
-
--------------------------------------------------------------------------------------------------------
-Séquence 1 : Codespace de Github
--------------------------------------------------------------------------------------------------------
-Objectif : Création d'un Codespace Github
-Difficulté : Très facile (~5 minutes)
--------------------------------------------------------------------------------------------------------
-**Faites un Fork de ce projet**. Si besion, voici une vidéo d'accompagnement pour vous aider dans les "Forks" : [Forker ce projet](https://youtu.be/p33-7XQ29zQ)
-
-Ensuite depuis l'onglet [CODE] de votre nouveau Repository, **ouvrez un Codespace Github**.
-
----------------------------------------------------
-Séquence 2 : Création du cluster Kubernetes K3d
----------------------------------------------------
-Objectif : Créer votre cluster Kubernetes K3d
-Difficulté : Simple (~5 minutes)
----------------------------------------------------
-Vous allez dans cette séquence mettre en place un cluster Kubernetes K3d contenant un master et 2 workers.
-Dans le terminal du Codespace copier/coller les codes ci-dessous etape par étape :
-
-**Création du cluster K3d**
-```
-curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
-```
-```
-k3d cluster create lab \
- --servers 1 \
- --agents 2
-```
-**vérification du cluster**
-```
-kubectl get nodes
-```
-**Déploiement d'une application (Docker Mario)**
-```
-kubectl create deployment mario --image=sevenajay/mario
-kubectl expose deployment mario --type=NodePort --port=80
-kubectl get svc
-```
-**Forward du port 80**
+# Atelier : De l'Image au Cluster (DevOps)
+
+Ce projet automatise le cycle de vie complet d'une application Nginx personnalisée :
+1. **Build** de l'image Docker avec **Packer**.
+2. **Infrastructure** : Cluster Kubernetes léger (**K3d**).
+3. **Déploiement** : Orchestration via **Ansible**.
+
+## Architecture
+
+* **Packer** : Construit une image basée sur Nginx en y injectant un `index.html` personnalisé.
+* **K3d** : Héberge l'application (1 Master, 2 Agents).
+* **Ansible** : Pilote Kubernetes pour créer le Déploiement et le Service.
+
+## Prérequis
+
+Ce projet est conçu pour tourner dans un **GitHub Codespace**.
+Les outils suivants sont nécessaires (et installés via le script de setup) :
+* Packer
+* Ansible & collection `kubernetes.core`
+* K3d
+* Kubectl
+
+## Guide de démarrage rapide
+
+Tout le processus est automatisé via un `Makefile`.
+
+### 1. Lancer l'automatisation complète
+Dans le terminal, exécutez simplement :
+
+```bash
+make all
```
-kubectl port-forward svc/mario 8080:80 >/tmp/mario.log 2>&1 &
+
+Cette commande va séquentiellement :
+* Installer les dépendances Ansible.
+* Construire l'image Docker avec Packer.
+* Importer l'image dans le cluster K3d.
+* Déployer les manifestes Kubernetes via Ansible.
+
+### 2. Accéder à l'application
+Une fois le déploiement terminé, faites un port-forward pour accéder au site web :
+
+```bash
+kubectl port-forward svc/nginx-service 8082:80
```
-**Réccupération de l'URL de l'application Mario**
-Votre application Mario est déployée sur le cluster K3d. Pour obtenir votre URL cliquez sur l'onglet **[PORTS]** dans votre Codespace et rendez public votre port **8080** (Visibilité du port).
-Ouvrez l'URL dans votre navigateur et jouer !
-
----------------------------------------------------
-Séquence 3 : Exercice
----------------------------------------------------
-Objectif : Customisez un image Docker avec Packer et déploiement sur K3d via Ansible
-Difficulté : Moyen/Difficile (~2h)
----------------------------------------------------
-Votre mission (si vous l'acceptez) : Créez une **image applicative customisée à l'aide de Packer** (Image de base Nginx embarquant le fichier index.html présent à la racine de ce Repository), puis déployer cette image customisée sur votre **cluster K3d** via **Ansible**, le tout toujours dans **GitHub Codespace**.
-
-**Architecture cible :** Ci-dessous, l'architecture cible souhaitée.
-
-
-
----------------------------------------------------
-## Processus de travail (résumé)
-
-1. Installation du cluster Kubernetes K3d (Séquence 1)
-2. Installation de Packer et Ansible
-3. Build de l'image customisée (Nginx + index.html)
-4. Import de l'image dans K3d
-5. Déploiement du service dans K3d via Ansible
-6. Ouverture des ports et vérification du fonctionnement
-
----------------------------------------------------
-Séquence 4 : Documentation
-Difficulté : Facile (~30 minutes)
----------------------------------------------------
-**Complétez et documentez ce fichier README.md** pour nous expliquer comment utiliser votre solution.
-Faites preuve de pédagogie et soyez clair dans vos expliquations et processus de travail.
-
----------------------------------------------------
-Evaluation
----------------------------------------------------
-Cet atelier, **noté sur 20 points**, est évalué sur la base du barème suivant :
-- Repository exécutable sans erreur majeure (4 points)
-- Fonctionnement conforme au scénario annoncé (4 points)
-- Degré d'automatisation du projet (utilisation de Makefile ? script ? ...) (4 points)
-- Qualité du Readme (lisibilité, erreur, ...) (4 points)
-- Processus travail (quantité de commits, cohérence globale, interventions externes, ...) (4 points)
+Ouvrez votre navigateur sur `http://localhost:8082`.
+
+## Structure du projet
+
+* `nginx.pkr.hcl` : Configuration Packer pour l'image Docker.
+* `playbook.yml` : Playbook Ansible pour le déploiement K8s.
+* `Makefile` : Orchestrateur des commandes (Entrypoint).
+* `index.html` : Code source de l'application.
+## Auteur
+Réalisé dans le cadre de l'atelier DevOps.
diff --git a/index.html b/index.html
index 972916a..ed1e039 100644
--- a/index.html
+++ b/index.html
@@ -1,62 +1,7 @@
+
-
-
-
-
+Atelier DevOps
-
-
-
+
Victoire ! Mon image Nginx personnalisée est déployée sur K3d via Ansible.
diff --git a/nginx.pkr.hcl b/nginx.pkr.hcl
new file mode 100644
index 0000000..28c5f57
--- /dev/null
+++ b/nginx.pkr.hcl
@@ -0,0 +1,32 @@
+packer {
+ required_plugins {
+ docker = {
+ version = ">= 0.0.7"
+ source = "github.com/hashicorp/docker"
+ }
+ }
+}
+
+source "docker" "nginx" {
+ image = "nginx:latest"
+ commit = true
+ changes = [
+ "EXPOSE 80",
+ "CMD [\"nginx\", \"-g\", \"daemon off;\"]"
+ ]
+}
+
+build {
+ name = "atelier-packer"
+ sources = ["source.docker.nginx"]
+
+ provisioner "file" {
+ source = "index.html"
+ destination = "/usr/share/nginx/html/index.html"
+ }
+
+ post-processor "docker-tag" {
+ repository = "my-custom-nginx"
+ tag = ["v1"]
+ }
+}
diff --git a/playbook.yml b/playbook.yml
new file mode 100644
index 0000000..545701e
--- /dev/null
+++ b/playbook.yml
@@ -0,0 +1,49 @@
+- name: Déployer Nginx Custom sur K3d
+ hosts: localhost
+ connection: local
+ gather_facts: false
+
+ tasks:
+ - name: Créer le Déploiement
+ kubernetes.core.k8s:
+ kubeconfig: "~/.kube/config"
+ definition:
+ apiVersion: apps/v1
+ kind: Deployment
+ metadata:
+ name: nginx-custom
+ namespace: default
+ spec:
+ replicas: 1
+ selector:
+ matchLabels:
+ app: nginx-custom
+ template:
+ metadata:
+ labels:
+ app: nginx-custom
+ spec:
+ containers:
+ - name: nginx
+ image: my-custom-nginx:v1
+ imagePullPolicy: Never
+ ports:
+ - containerPort: 80
+
+ - name: Créer le Service
+ kubernetes.core.k8s:
+ kubeconfig: "~/.kube/config"
+ definition:
+ apiVersion: v1
+ kind: Service
+ metadata:
+ name: nginx-service
+ namespace: default
+ spec:
+ selector:
+ app: nginx-custom
+ ports:
+ - protocol: TCP
+ port: 80
+ targetPort: 80
+ type: ClusterIP
From d28792a11a9ac8382c1941bc4e7ffcebaa996ff3 Mon Sep 17 00:00:00 2001
From: AmirDhe <104517422+AmirDhe@users.noreply.github.com>
Date: Fri, 6 Feb 2026 11:33:50 +0100
Subject: [PATCH 2/8] Revise README for better clarity and organization
Updated README to enhance clarity and structure, added badges, and improved instructions.
---
README.md | 111 +++++++++++++++++++++++++++++++++++++-----------------
1 file changed, 76 insertions(+), 35 deletions(-)
diff --git a/README.md b/README.md
index 2538ada..6354e89 100644
--- a/README.md
+++ b/README.md
@@ -1,57 +1,98 @@
-# Atelier : De l'Image au Cluster (DevOps)
+# 🚀 Atelier DevOps : De l'Image au Cluster
-Ce projet automatise le cycle de vie complet d'une application Nginx personnalisée :
-1. **Build** de l'image Docker avec **Packer**.
-2. **Infrastructure** : Cluster Kubernetes léger (**K3d**).
-3. **Déploiement** : Orchestration via **Ansible**.
+
+
+
+
-## Architecture
+Ce projet a été réalisé dans le cadre de l'atelier **"Atelier from Image to Cluster"**.
+L'objectif est d'industrialiser le cycle de vie d'une application Nginx : de la construction de l'image (Build) à son déploiement automatisé (Run) dans un environnement Kubernetes.
-* **Packer** : Construit une image basée sur Nginx en y injectant un `index.html` personnalisé.
-* **K3d** : Héberge l'application (1 Master, 2 Agents).
-* **Ansible** : Pilote Kubernetes pour créer le Déploiement et le Service.
+---
-## Prérequis
+## 🏗 Architecture du projet
-Ce projet est conçu pour tourner dans un **GitHub Codespace**.
-Les outils suivants sont nécessaires (et installés via le script de setup) :
-* Packer
-* Ansible & collection `kubernetes.core`
-* K3d
-* Kubectl
+Le projet utilise l'approche **Infrastructure as Code** (IaC) pour garantir la reproductibilité.
-## Guide de démarrage rapide
+```mermaid
+graph LR
+ A[Code Source index.html] -->|Packer| B(Image Docker my-custom-nginx:v1)
+ B -->|k3d image import| C{Cluster K3d}
+ D[Ansible Playbook] -->|Kubernetes Core| C
+ C -->|Port Forward| E[Accès Navigateur]
+```
+
+1. **Packer** : Construit une image Docker immuable basée sur Nginx, embarquant le site web statique.
+2. **K3d** : Simule un cluster Kubernetes complet (1 Master, 2 Workers) dans des conteneurs Docker.
+3. **Ansible** : Orchestre le déploiement des objets Kubernetes (Deployment, Service) de manière idempotente.
+
+---
+
+## 🛠 Prérequis
+
+Ce projet est conçu pour être exécuté dans un **GitHub Codespace**.
+Les outils nécessaires sont installés automatiquement via le Makefile ou les scripts fournis :
+* `Packer`
+* `Ansible` (avec collection `kubernetes.core`)
+* `K3d`
+* `Kubectl`
-Tout le processus est automatisé via un `Makefile`.
+---
-### 1. Lancer l'automatisation complète
-Dans le terminal, exécutez simplement :
+## 🚀 Démarrage Rapide
+
+L'ensemble du processus est automatisé grâce à un **Makefile**.
+
+### 1. Lancement de l'automatisation
+Dans le terminal du Codespace, lancez simplement la commande suivante :
```bash
make all
```
-Cette commande va séquentiellement :
-* Installer les dépendances Ansible.
-* Construire l'image Docker avec Packer.
-* Importer l'image dans le cluster K3d.
-* Déployer les manifestes Kubernetes via Ansible.
+> **Note :** Cette commande va installer les dépendances, builder l'image, l'importer dans le cluster et déployer l'application.
+
+### 2. Vérification
+Une fois le script terminé, vérifiez que les pods sont actifs :
+
+```bash
+kubectl get pods
+```
-### 2. Accéder à l'application
-Une fois le déploiement terminé, faites un port-forward pour accéder au site web :
+### 3. Accès à l'application
+Pour visualiser le site web, créez un tunnel vers le service :
```bash
kubectl port-forward svc/nginx-service 8082:80
```
-Ouvrez votre navigateur sur `http://localhost:8082`.
+Ouvrez ensuite votre navigateur (ou l'onglet "PORTS" de VS Code) à l'adresse : `http://localhost:8082`.
+
+---
+
+## 📂 Structure des fichiers
+
+| Fichier | Description |
+| :--- | :--- |
+| `Makefile` | **Point d'entrée**. Orchestre les commandes (setup, build, deploy). |
+| `nginx.pkr.hcl` | Configuration **Packer**. Définit comment l'image Docker est construite. |
+| `playbook.yml` | Configuration **Ansible**. Décrit l'état souhaité dans Kubernetes. |
+| `index.html` | Le site web statique déployé. |
+
+---
+
+## 💡 Commandes détaillées (Makefile)
+
+Si vous souhaitez exécuter les étapes une par une plutôt que d'utiliser `make all` :
+
+* `make setup` : Installe les collections Ansible requises.
+* `make build` : Lance Packer pour créer l'image `my-custom-nginx:v1`.
+* `make import` : Importe l'image locale dans le registre interne de K3d (**Étape cruciale**).
+* `make deploy` : Exécute le playbook Ansible pour créer les ressources Kubernetes.
+* `make clean` : Nettoie l'environnement (suppression du cluster).
-## Structure du projet
+---
-* `nginx.pkr.hcl` : Configuration Packer pour l'image Docker.
-* `playbook.yml` : Playbook Ansible pour le déploiement K8s.
-* `Makefile` : Orchestrateur des commandes (Entrypoint).
-* `index.html` : Code source de l'application.
+## 📝 Auteur
-## Auteur
-Réalisé dans le cadre de l'atelier DevOps.
+Projet réalisé par **Amir** dans le cadre de l'évaluation DevOps.
From ebd44912a41a171d33de5cfacc893eae798928f8 Mon Sep 17 00:00:00 2001
From: AmirDhe <104517422+AmirDhe@users.noreply.github.com>
Date: Fri, 6 Feb 2026 11:34:39 +0100
Subject: [PATCH 3/8] Fix formatting in README.md headings
---
README.md | 15 ++++++---------
1 file changed, 6 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index 6354e89..c091885 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# 🚀 Atelier DevOps : De l'Image au Cluster
+# Atelier DevOps : De l'Image au Cluster


@@ -10,7 +10,7 @@ L'objectif est d'industrialiser le cycle de vie d'une application Nginx : de la
---
-## 🏗 Architecture du projet
+## Architecture du projet
Le projet utilise l'approche **Infrastructure as Code** (IaC) pour garantir la reproductibilité.
@@ -28,7 +28,7 @@ graph LR
---
-## 🛠 Prérequis
+## Prérequis
Ce projet est conçu pour être exécuté dans un **GitHub Codespace**.
Les outils nécessaires sont installés automatiquement via le Makefile ou les scripts fournis :
@@ -39,7 +39,7 @@ Les outils nécessaires sont installés automatiquement via le Makefile ou les s
---
-## 🚀 Démarrage Rapide
+## Démarrage Rapide
L'ensemble du processus est automatisé grâce à un **Makefile**.
@@ -70,7 +70,7 @@ Ouvrez ensuite votre navigateur (ou l'onglet "PORTS" de VS Code) à l'adresse :
---
-## 📂 Structure des fichiers
+## Structure des fichiers
| Fichier | Description |
| :--- | :--- |
@@ -81,7 +81,7 @@ Ouvrez ensuite votre navigateur (ou l'onglet "PORTS" de VS Code) à l'adresse :
---
-## 💡 Commandes détaillées (Makefile)
+## Commandes détaillées (Makefile)
Si vous souhaitez exécuter les étapes une par une plutôt que d'utiliser `make all` :
@@ -93,6 +93,3 @@ Si vous souhaitez exécuter les étapes une par une plutôt que d'utiliser `make
---
-## 📝 Auteur
-
-Projet réalisé par **Amir** dans le cadre de l'évaluation DevOps.
From 2b1ddca2a3752ea71dc95b6860720dcfdabfc0a1 Mon Sep 17 00:00:00 2001
From: AmirDhe <104517422+AmirDhe@users.noreply.github.com>
Date: Fri, 6 Feb 2026 12:10:34 +0100
Subject: [PATCH 4/8] Enhance Makefile with setup and deployment steps
---
Makefile | 45 +++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 43 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 980de10..6938904 100644
--- a/Makefile
+++ b/Makefile
@@ -1,20 +1,61 @@
-.PHONY: setup build import deploy check all
+.PHONY: all setup cluster build import deploy check clean
+# 🎯 Commande par défaut : lance tout le processus de A à Z
+all: setup cluster build import deploy check
+
+# 🛠️ 1. Installation des dépendances (Packer, Ansible, Libs)
setup:
+ @echo "--- [1/6] Installation des prérequis ---"
+ @# Correction préventive pour éviter l'erreur de dépôt yarn fréquente dans Codespaces
+ sudo rm -f /etc/apt/sources.list.d/yarn.list
+ @# Installation de Packer
+ curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
+ sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $$(lsb_release -cs) main" -y
+ sudo apt-get update
+ sudo apt-get install packer -y
+ @# Installation des outils Python pour Ansible et K8s
+ pip install --upgrade pip
+ pip install ansible kubernetes requests
ansible-galaxy collection install kubernetes.core
+ @echo "✅ Environnement prêt."
+
+# 2. Création du cluster K3d (si inexistant)
+cluster:
+ @echo "--- [2/6] Vérification du cluster K3d ---"
+ @# Installe K3d si la commande n'existe pas
+ which k3d > /dev/null || curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
+ @# Crée le cluster 'lab' seulement s'il n'existe pas déjà
+ k3d cluster list | grep -q "lab" || k3d cluster create lab --servers 1 --agents 2
+ @echo "✅ Cluster K3d opérationnel."
+# 3. Construction de l'image Docker avec Packer
build:
+ @echo "--- [3/6] Build de l'image Packer ---"
packer init nginx.pkr.hcl
packer build nginx.pkr.hcl
+ @echo "✅ Image 'my-custom-nginx:v1' construite."
+# 4. Import de l'image dans le cluster (Étape critique pour K3d)
import:
+ @echo "--- [4/6] Import de l'image dans K3d ---"
k3d image import my-custom-nginx:v1 -c lab
+ @echo "✅ Image importée dans le cluster."
+# 5. Déploiement via Ansible
deploy:
+ @echo "--- [5/6] Déploiement Ansible ---"
ansible-playbook playbook.yml
+ @echo "✅ Playbook exécuté."
+# 6. Vérification finale
check:
+ @echo "--- [6/6] État du déploiement ---"
+ @sleep 5 # Petite pause pour laisser le temps aux pods de démarrer
kubectl get pods
kubectl get svc
+ @echo "🎉 Succès ! L'application est déployée."
-all: setup build import deploy
+# Nettoyage (Optionnel)
+clean:
+ k3d cluster delete lab
+ docker rmi my-custom-nginx:v1
From 32e1f99a82a9a13ff283f1262fbf4c005b8ab525 Mon Sep 17 00:00:00 2001
From: AmirDhe <104517422+AmirDhe@users.noreply.github.com>
Date: Fri, 6 Feb 2026 12:10:53 +0100
Subject: [PATCH 5/8] Fix comments formatting in Makefile
---
Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 6938904..b11f713 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,9 @@
.PHONY: all setup cluster build import deploy check clean
-# 🎯 Commande par défaut : lance tout le processus de A à Z
+# Commande par défaut : lance tout le processus de A à Z
all: setup cluster build import deploy check
-# 🛠️ 1. Installation des dépendances (Packer, Ansible, Libs)
+# 1. Installation des dépendances (Packer, Ansible, Libs)
setup:
@echo "--- [1/6] Installation des prérequis ---"
@# Correction préventive pour éviter l'erreur de dépôt yarn fréquente dans Codespaces
From 2d52157c062a9afb3b0f8f97c6c1b49eca291585 Mon Sep 17 00:00:00 2001
From: AmirDhe <104517422+AmirDhe@users.noreply.github.com>
Date: Fri, 6 Feb 2026 12:11:22 +0100
Subject: [PATCH 6/8] Remove checkmarks from echo statements in Makefile
---
Makefile | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/Makefile b/Makefile
index b11f713..5c3dcbb 100644
--- a/Makefile
+++ b/Makefile
@@ -17,7 +17,7 @@ setup:
pip install --upgrade pip
pip install ansible kubernetes requests
ansible-galaxy collection install kubernetes.core
- @echo "✅ Environnement prêt."
+ @echo " Environnement prêt."
# 2. Création du cluster K3d (si inexistant)
cluster:
@@ -26,26 +26,26 @@ cluster:
which k3d > /dev/null || curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
@# Crée le cluster 'lab' seulement s'il n'existe pas déjà
k3d cluster list | grep -q "lab" || k3d cluster create lab --servers 1 --agents 2
- @echo "✅ Cluster K3d opérationnel."
+ @echo " Cluster K3d opérationnel."
# 3. Construction de l'image Docker avec Packer
build:
@echo "--- [3/6] Build de l'image Packer ---"
packer init nginx.pkr.hcl
packer build nginx.pkr.hcl
- @echo "✅ Image 'my-custom-nginx:v1' construite."
+ @echo " Image 'my-custom-nginx:v1' construite."
# 4. Import de l'image dans le cluster (Étape critique pour K3d)
import:
@echo "--- [4/6] Import de l'image dans K3d ---"
k3d image import my-custom-nginx:v1 -c lab
- @echo "✅ Image importée dans le cluster."
+ @echo " Image importée dans le cluster."
# 5. Déploiement via Ansible
deploy:
@echo "--- [5/6] Déploiement Ansible ---"
ansible-playbook playbook.yml
- @echo "✅ Playbook exécuté."
+ @echo " Playbook exécuté."
# 6. Vérification finale
check:
@@ -53,7 +53,7 @@ check:
@sleep 5 # Petite pause pour laisser le temps aux pods de démarrer
kubectl get pods
kubectl get svc
- @echo "🎉 Succès ! L'application est déployée."
+ @echo " Succès ! L'application est déployée."
# Nettoyage (Optionnel)
clean:
From 161f30330e315542d348c8509d10f15809433cca Mon Sep 17 00:00:00 2001
From: AmirDhe <104517422+AmirDhe@users.noreply.github.com>
Date: Fri, 6 Feb 2026 12:13:10 +0100
Subject: [PATCH 7/8] Update Makefile
From 30d4b691991480d8a1e9dc09169f7300910950ed Mon Sep 17 00:00:00 2001
From: AmirDhe <104517422+AmirDhe@users.noreply.github.com>
Date: Fri, 6 Feb 2026 13:42:55 +0100
Subject: [PATCH 8/8] Remove emphasis from import step in README
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c091885..3008509 100644
--- a/README.md
+++ b/README.md
@@ -87,7 +87,7 @@ Si vous souhaitez exécuter les étapes une par une plutôt que d'utiliser `make
* `make setup` : Installe les collections Ansible requises.
* `make build` : Lance Packer pour créer l'image `my-custom-nginx:v1`.
-* `make import` : Importe l'image locale dans le registre interne de K3d (**Étape cruciale**).
+* `make import` : Importe l'image locale dans le registre interne de K3d .
* `make deploy` : Exécute le playbook Ansible pour créer les ressources Kubernetes.
* `make clean` : Nettoie l'environnement (suppression du cluster).