Files
dockezr/ansible
..

🚀 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:
# 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
  1. Vérifier l'installation:
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:

[production]
server ansible_host=VOTRE_IP_SERVEUR ansible_user=VOTRE_USER ansible_ssh_private_key_file=../../sskdockerz/ssh-key-2025-10-16.key

Exemple:

[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:

# 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

# 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:

# Depuis le dossier ansible/
ansible all -i inventory.ini -m ping

Vous devriez voir:

server | SUCCESS => {
    "ping": "pong"
}

Déploiement complet

# 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)

# 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:

🐛 Dépannage

Problème de connexion SSH

# 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"

# Ajouter --ask-become-pass
ansible-playbook -i inventory.ini deploy.yml --ask-become-pass

Vérifier l'état sur le serveur

# 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

# 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:

# 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:
# 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
  1. Configurez un pare-feu sur le serveur:
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! 🚀