Exercice 06 (Avancé) : Projet final - Infrastructure complète avec Ansible
🎯 Objectifs
À la fin de cet exercice, tu seras capable de :
- ✅ Concevoir un projet Ansible professionnel de A à Z
- ✅ Combiner toutes les techniques avancées dans un seul projet cohérent
- ✅ Documenter et tester le projet pour une utilisation en équipe
- ✅ Produire un déploiement zero-downtime reproductible
Durée estimée : 90 minutes
Difficulté : ⭐⭐⭐⭐⭐ (Avancé)
Prérequis :
- Tous les exercices Avancé précédents terminés
- Maîtrise des rôles, Vault, inventaires dynamiques, CI/CD
📖 Contexte
Ce projet final rassemble tout ce que tu as appris dans les trois modules Ansible. Tu vas construire un projet Ansible complet qui pourrait être utilisé dans une vraie équipe DevOps : structure professionnelle, secrets chiffrés, rôles réutilisables, pipeline CI/CD et documentation.
📋 Énoncé
Crée un projet Ansible infra-demo qui déploie une stack applicative complète avec :
- Rôle
common: configuration de base, sécurité SSH - Rôle
nginx: serveur web avec gestion SSL simulée - Rôle
app: déploiement d'une application - Secrets gérés avec Ansible Vault
- Pipeline GitHub Actions pour lint et déploiement
- README documentant l'usage
🔧 Structure du Projet
infra-demo/
├── README.md
├── ansible.cfg
├── requirements.yml
├── .ansible-lint
├── .gitignore
│
├── inventaires/
│ ├── production/
│ │ ├── hosts.ini
│ │ ├── group_vars/
│ │ │ ├── all.yml
│ │ │ ├── all/
│ │ │ │ └── vault.yml # Secrets chiffrés
│ │ │ └── webservers.yml
│ │ └── host_vars/
│ └── staging/
│ ├── hosts.ini
│ └── group_vars/
│ └── all.yml
│
├── roles/
│ ├── common/
│ │ ├── defaults/main.yml
│ │ ├── tasks/main.yml
│ │ └── handlers/main.yml
│ ├── nginx/
│ │ ├── defaults/main.yml
│ │ ├── tasks/main.yml
│ │ ├── handlers/main.yml
│ │ └── templates/
│ │ └── nginx-vhost.conf.j2
│ └── app/
│ ├── defaults/main.yml
│ ├── tasks/main.yml
│ └── templates/
│ └── index.html.j2
│
├── playbooks/
│ ├── site.yml # Playbook principal
│ ├── rolling-update.yml # Déploiement sans interruption
│ └── maintenance.yml # Opérations de maintenance
│
└── .github/
└── workflows/
├── lint.yml
└── deploy.yml