3 KiB
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
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é:
~/.ssh/id_ed25519_ansible_chezlepro
Préparation type:
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:
ansible/inventory/hosts.yml
Vérifier:
ansible_host;ansible_user;ansible_ssh_private_key_file.
Variables
Variables non secrètes:
ansible/group_vars/all.yml
Secrets:
ansible/group_vars/vault.yml
Créer depuis l'exemple:
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:
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
ansible-playbook ansible/verify.yml --ask-vault-pass
Vérification directe de l'API:
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:
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
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.