# 🚀 DĂ©ploiement Ansible - DockeZR Ce dossier contient les playbooks Ansible pour automatiser le dĂ©ploiement de l'application DockeZR sur un serveur Linux distant. ## 📋 PrĂ©requis ### Sur votre machine locale (Windows) 1. **Installer Ansible** via WSL2 ou utiliser un container Docker: ```bash # Option 1: WSL2 (Ubuntu) wsl --install # Puis dans WSL: sudo apt update sudo apt install ansible -y # Option 2: Via Docker docker run -it --rm -v ${PWD}:/ansible ansible/ansible:latest ``` 2. **VĂ©rifier l'installation**: ```bash ansible --version ``` ### Sur le serveur distant - SystĂšme Linux (Ubuntu 20.04/22.04 recommandĂ©) - AccĂšs SSH avec clĂ© privĂ©e - Utilisateur avec droits sudo - Ports ouverts: 22 (SSH), 3000, 8001, 9090, 3001 ## 📁 Structure des fichiers ``` ansible/ ├── deploy.yml # Playbook principal de dĂ©ploiement ├── inventory.ini # Inventaire des serveurs ├── README.md # Ce fichier ├── group_vars/ │ └── all.yml # Variables globales └── templates/ └── env.prod.j2 # Template du fichier .env.prod ``` ## ⚙ Configuration ### 1. Modifier l'inventaire Éditez `inventory.ini` et remplacez les valeurs: ```ini [production] server ansible_host=VOTRE_IP_SERVEUR ansible_user=VOTRE_USER ansible_ssh_private_key_file=../../sskdockerz/ssh-key-2025-10-16.key ``` **Exemple:** ```ini [production] server ansible_host=192.168.1.100 ansible_user=ubuntu ansible_ssh_private_key_file=../../sskdockerz/ssh-key-2025-10-16.key ``` ### 2. Configurer les variables Éditez `group_vars/all.yml` et modifiez: ```yaml # URL de votre repository GitHub project_repo: "https://github.com/VOTRE_USERNAME/dockezr.git" # Mots de passe (IMPORTANT: changez-les!) postgres_password: "votre_mot_de_passe_securise" grafana_admin_password: "votre_mot_de_passe_grafana" ``` ### 3. VĂ©rifier les permissions de la clĂ© SSH ```bash # Sur Windows (WSL) chmod 600 ../../sskdockerz/ssh-key-2025-10-16.key # Ou sur PowerShell icacls "..\..\sskdockerz\ssh-key-2025-10-16.key" /inheritance:r /grant:r "%USERNAME%:R" ``` ## 🚀 ExĂ©cution du Playbook ### Test de connexion Avant de dĂ©ployer, testez la connexion SSH: ```bash # Depuis le dossier ansible/ ansible all -i inventory.ini -m ping ``` Vous devriez voir: ``` server | SUCCESS => { "ping": "pong" } ``` ### DĂ©ploiement complet ```bash # ExĂ©cution du playbook complet ansible-playbook -i inventory.ini deploy.yml # Avec affichage verbeux (pour debug) ansible-playbook -i inventory.ini deploy.yml -v # Demander le mot de passe sudo si nĂ©cessaire ansible-playbook -i inventory.ini deploy.yml --ask-become-pass ``` ### ExĂ©cution par Ă©tapes (tags) ```bash # ArrĂȘter uniquement les conteneurs ansible-playbook -i inventory.ini deploy.yml --tags stop # Reconstruire les images ansible-playbook -i inventory.ini deploy.yml --tags build # DĂ©marrer les conteneurs ansible-playbook -i inventory.ini deploy.yml --tags start ``` ## 📊 Étapes du DĂ©ploiement Le playbook `deploy.yml` effectue les opĂ©rations suivantes: 1. **[1/10]** 🔄 Mise Ă  jour du systĂšme et installation des prĂ©requis 2. **[2/10]** 🐳 Installation de Docker Engine 3. **[3/10]** 🔍 VĂ©rification de Docker Compose 4. **[4/10]** 📁 CrĂ©ation des rĂ©pertoires de dĂ©ploiement 5. **[5/10]** đŸ“„ Clonage du repository GitHub 6. **[6/10]** ⚙ Configuration des variables d'environnement 7. **[7/10]** 🛑 ArrĂȘt des conteneurs existants 8. **[8/10]** đŸ—ïž Construction des images Docker 9. **[9/10]** 🚀 DĂ©marrage des conteneurs 10. **[10/10]** ✅ VĂ©rification et affichage des logs ## 🌐 AccĂšs aux Services AprĂšs le dĂ©ploiement rĂ©ussi, accĂ©dez aux services via: - **Frontend**: http://VOTRE_IP:3000 - **Backend API**: http://VOTRE_IP:8001 - **Documentation API**: http://VOTRE_IP:8001/docs - **Prometheus**: http://VOTRE_IP:9090 - **Grafana**: http://VOTRE_IP:3001 (admin/votre_mot_de_passe) ## 🐛 DĂ©pannage ### ProblĂšme de connexion SSH ```bash # Tester la connexion manuelle ssh -i ../../sskdockerz/ssh-key-2025-10-16.key VOTRE_USER@VOTRE_IP # VĂ©rifier les permissions de la clĂ© ls -la ../../sskdockerz/ssh-key-2025-10-16.key ``` ### Erreur "Permission denied" ```bash # Ajouter --ask-become-pass ansible-playbook -i inventory.ini deploy.yml --ask-become-pass ``` ### VĂ©rifier l'Ă©tat sur le serveur ```bash # SSH sur le serveur ssh -i ../../sskdockerz/ssh-key-2025-10-16.key VOTRE_USER@VOTRE_IP # VĂ©rifier Docker docker --version docker ps # VĂ©rifier les conteneurs DockeZR cd /opt/dockezr docker compose -f docker-compose.prod.yml ps docker compose -f docker-compose.prod.yml logs ``` ### Les conteneurs ne dĂ©marrent pas ```bash # Sur le serveur, vĂ©rifier les logs cd /opt/dockezr docker compose -f docker-compose.prod.yml logs -f # Reconstruire les images docker compose -f docker-compose.prod.yml up -d --build ``` ## 🔄 Mise Ă  jour de l'application Pour mettre Ă  jour l'application aprĂšs des modifications: ```bash # Re-exĂ©cuter le playbook ansible-playbook -i inventory.ini deploy.yml # Ou uniquement reconstruire et redĂ©marrer ansible-playbook -i inventory.ini deploy.yml --tags build,start ``` ## 📝 Notes - Le playbook est idempotent: vous pouvez l'exĂ©cuter plusieurs fois sans problĂšme - Les donnĂ©es PostgreSQL sont persistĂ©es dans des volumes Docker - Les logs sont accessibles via `docker compose logs` - Le dĂ©ploiement prend environ 5-10 minutes selon la connexion ## 🔐 SĂ©curitĂ© **⚠ IMPORTANT:** 1. **Changez tous les mots de passe** dans `group_vars/all.yml` 2. **Ne commitez JAMAIS** les mots de passe rĂ©els sur Git 3. Utilisez **Ansible Vault** pour chiffrer les secrets: ```bash # Chiffrer le fichier de variables ansible-vault encrypt group_vars/all.yml # ExĂ©cuter avec vault ansible-playbook -i inventory.ini deploy.yml --ask-vault-pass ``` 4. **Configurez un pare-feu** sur le serveur: ```bash sudo ufw allow 22/tcp sudo ufw allow 3000/tcp sudo ufw allow 8001/tcp sudo ufw enable ``` ## 📞 Support Pour toute question ou problĂšme: - VĂ©rifiez les logs Ansible avec `-vvv` - Consultez la documentation Ansible: https://docs.ansible.com - VĂ©rifiez les logs Docker sur le serveur --- **Bon dĂ©ploiement! 🚀**