# Déploiement Ansible Statut: procédure supportée Public: exploitants, sysadmin technique Dernière révision: 2026-06-01 Ce dépôt peut installer l'application sur une Debian vanille avec un compte `ansible` sudoer sans mot de passe. Le playbook installe: - dépendances système; - PostgreSQL; - backend FastAPI; - frontend compilé; - service systemd; - NGINX local; - sauvegardes quotidiennes; - certificat Let's Encrypt si activé. ## Pré-requis poste de contrôle ```bash python3 -m pip install --user ansible ansible-galaxy collection install -r ansible/requirements.yml node --version npm --version ``` Node.js 20 ou plus récent est recommandé pour construire le frontend. ## Accès SSH L'inventaire référence explicitement la clé: ```bash ~/.ssh/id_ed25519_ansible_chezlepro ``` Préparation type: ```bash ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_ansible_chezlepro -C "ansible@chezlepro" ssh-copy-id -i ~/.ssh/id_ed25519_ansible_chezlepro.pub ansible@ADRESSE_IP_VM ssh -i ~/.ssh/id_ed25519_ansible_chezlepro ansible@ADRESSE_IP_VM ``` ## Inventaire Fichier: ```bash ansible/inventory/hosts.yml ``` Vérifier: - `ansible_host`; - `ansible_user`; - `ansible_ssh_private_key_file`. ## Variables Variables non secrètes: ```bash ansible/group_vars/all.yml ``` Secrets: ```bash ansible/group_vars/vault.yml ``` Créer depuis l'exemple: ```bash cp ansible/group_vars/vault.yml.example ansible/group_vars/vault.yml openssl rand -base64 48 nano ansible/group_vars/vault.yml ansible-vault encrypt ansible/group_vars/vault.yml ``` Le fichier de secrets doit contenir au minimum: - `groupe_meditation_db_password`; - `groupe_meditation_jwt_secret`. ## Installation Depuis la racine: ```bash ansible-playbook ansible/site.yml --ask-vault-pass ``` Si le vault local n'est pas chiffré dans un contexte de développement, l'option `--ask-vault-pass` peut être omise. ## Vérification ```bash ansible-playbook ansible/verify.yml --ask-vault-pass ``` Vérification directe de l'API: ```bash ansible groupe-meditation-prod -m uri -a 'url=http://127.0.0.1:8000/api/health return_content=true status_code=200' -o ``` Vérification des groupes publics: ```bash ansible groupe-meditation-prod -m uri -a 'url=http://127.0.0.1:8000/api/auth/groupes return_content=true status_code=200' -o ``` ## Initialisation de la base Le seed ne crée qu'un groupe de démonstration: - nom: `Groupe Démonstration`; - compte: `sysadmin`; - PIN initial: `0000`; - historique fictif crédible. Le playbook ne relance le seed que si la base est absente ou vide selon les tests du rôle applicatif. ## Redéploiement Le playbook est conçu pour être relancé. Il synchronise le code, reconstruit le frontend, redémarre le service et laisse les données existantes intactes. ## Sauvegarde manuelle ```bash ansible-playbook ansible/backup-now.yml --ask-vault-pass ``` ## NGINX L'application installe un NGINX local sur la VM. Il sert: - le frontend statique; - le reverse proxy vers l'API FastAPI locale. Un proxy externe peut gérer TLS et relayer vers cette VM en HTTP.