1. Vue d’Ensemble
Le Makefile à la racine de sever-admin est le point d’entrée de toutes les opérations. Il ne fait qu’une chose : appeler les playbooks Ansible avec les bons paramètres.
Il existe exactement 6 commandes :
| Commande | Rôle |
|---|---|
|
Afficher l’aide et les usages |
|
Tester la connexion SSH/Ansible au serveur |
|
Backup d’une base de données (dump dans |
|
Restaurer une base depuis un fichier dump |
|
Déployer une application ou un service |
|
Installer les crons de backup automatique sur le serveur |
|
|
2. Paramètres Globaux
| Paramètre | Valeurs | Description |
|---|---|---|
|
voir listes ci-dessous |
Application/service cible (obligatoire sauf ping/setup-cron/help) |
|
|
|
|
ex: |
Tag d’image Docker à déployer depuis le GitLab Container Registry (deploy uniquement) |
|
ex: |
Branche Git à puller (défaut : |
|
nom de fichier |
Fichier dump à restaurer (restore uniquement), situé dans |
Prérequis technique : le fichier ~/.vault_sever_admin (mot de passe Ansible Vault, chmod 600) doit exister — le Makefile passe systématiquement --vault-password-file $(HOME)/.vault_sever_admin.
3. make ping
Teste la connexion au serveur de production.
make ping
# Exécute : cd ansible && ansible production -m ping --vault-password-file ~/.vault_sever_admin
# Attendu : vps-main | SUCCESS => { "ping": "pong" }
4. make backup
Backup d’une base de données via ansible/playbooks/backup.yml.
Valeurs APP valides : clarajob-ddl | clarajob-mongo | marketisia-sa | auth-server-db | all
make backup APP=clarajob-ddl # PostgreSQL ClaraJob
make backup APP=clarajob-mongo # MongoDB ClaraJob
make backup APP=marketisia-sa # PostgreSQL Marketisia/PredictX (container marketisia-ddl)
make backup APP=auth-server-db # PostgreSQL Keycloak
make backup APP=all # Les 4 bases d'un coup
make backup APP=clarajob-ddl ENV=local # Sur ta machine locale
Ce que fait le rôle backup :
-
Valide
db_service,db_name,db_user,db_pass(depuis vars.yml + vault.yml) -
Crée
db-config/dump/<service>/etdb-config/dump_description/<service>/ -
Vérifie que le container DB tourne (
docker inspect) -
Lance le dump dans le container :
-
PostgreSQL :
pg_dump --clean --if-exists→ fichier.sql -
MongoDB :
mongodump --archive→ fichier.archive -
MySQL (supporté par le rôle) :
mysqldump --add-drop-table --routines --triggers
-
-
Vérifie que le dump existe et n’est pas vide (sinon échec)
-
Écrit un fichier de description horodaté
Nommage des fichiers produits :
db-config/dump/<db_service>/<db_service>-YYYY-MM-DD_HHMMSS.sql # PostgreSQL / MySQL
db-config/dump/<db_service>/<db_service>-YYYY-MM-DD_HHMMSS.archive # MongoDB
Exemples réels :
db-config/dump/clarajob-ddl/clarajob-ddl-2026-07-26_040000.sql
db-config/dump/clarajob-mongo/clarajob-mongo-2026-07-26_050000.archive
db-config/dump/marketisia-ddl/marketisia-ddl-2026-07-26_030000.sql
|
Les dumps ne sont pas compressés (pas de |
5. make restore
Restaure une base depuis un dump via ansible/playbooks/restore.yml.
APP et DUMP sont obligatoires.
Valeurs APP valides : clarajob-ddl | clarajob-mongo | marketisia-sa | auth-server-db | minio-service
make restore APP=clarajob-ddl DUMP=clarajob-ddl-2026-07-26_040000.sql
make restore APP=clarajob-mongo DUMP=clarajob-mongo-2026-07-26_050000.archive
make restore APP=marketisia-sa DUMP=marketisia-ddl-2026-07-26_030000.sql
make restore APP=auth-server-db DUMP=auth_server_db-2026-07-26_060000.sql
# MinIO (object storage) — cas particulier :
make restore APP=minio-service DUMP=latest # dernier backup mc mirror
make restore APP=minio-service DUMP=/chemin/vers/backup/2026-04-05_0600
Ce que fait le rôle restore (bases de données) :
-
Vérifie que le container DB tourne
-
Cherche le dump dans
db-config/dump/<db_service>/<DUMP>— échec explicite s’il est introuvable -
Restaure dans le container :
-
PostgreSQL :
psql -U <user> -d <db> < dump(le dump contient--clean --if-exists, donc drop/recreate des objets) -
MongoDB :
mongorestore --drop --archive < dump(--dropécrase les collections existantes) -
MySQL :
mysql <db> < dump
-
Ce que fait le rôle restore_minio :
-
Si
DUMP=latest: sélectionne le répertoire de backup le plus récent dansclarajob_sa/backups/minio/ -
Arrête
minio-service -
Restaure via
docker run minio/mc:mc mirror /backups/ /data/vers le volumeclarajob_sa_minio_data -
Redémarre
minio-service, vérifie qu’il tourne, rollback sinon
6. make deploy
Déploie une application via ansible/playbooks/deploy.yml.
Les 19 valeurs APP valides (liste exacte du assert du playbook) :
| APP | Ce qui se passe | Rôle Ansible utilisé |
|---|---|---|
|
git pull du repo |
bloc inline (avec rollback) |
|
git pull + restart du container PostgreSQL + backup pre-deploy auto |
|
|
restart du service MongoDB (pas de build) + backup pre-deploy auto |
|
|
restart de l’API Spring Boot (image GitLab) |
|
|
git pull + build npm dans un container node ( |
|
|
restart du service embedding FastAPI |
|
|
restart du cache Redis |
|
|
restart MinIO S3 |
|
|
restart du sidecar backup MinIO (mc mirror) |
|
|
restart Dozzle (logs Docker) |
|
|
restart PostgreSQL Keycloak + backup pre-deploy auto |
|
|
restart Keycloak + backup pre-deploy auto de sa DB |
|
|
restart Adminer |
|
|
restart du Nginx de documentation |
|
|
git pull (site pré-généré en local : |
|
|
git pull |
bloc inline (avec rollback) |
|
git pull du repo |
bloc inline (avec rollback) |
|
restart de l’API PredictX seule |
|
|
restart de la GUI PredictX seule |
|
Exemples réels (repris du Makefile) :
make deploy APP=clarajob-sa # stack complet, tag latest
make deploy APP=clarajob-sa TAG=v1.2.0 # version spécifique
make deploy APP=clarajob-front-api TAG=abc1234 # un service à un commit SHA
make deploy APP=clarajob-ddl BRANCH=feature/my-branch
make deploy APP=clarajob-sa BRANCH=develop TAG=v1.2.0
make deploy APP=marketisia-sa
make deploy APP=marketisia-front-gui TAG=v1.2.0
make deploy APP=traefik TAG=v1.0.0
make deploy APP=keycloak
make deploy APP=documentation # pull (build/ versionné) + restart nginx
make deploy APP=clarajob-sa ENV=local # déploiement sur ta machine
Séquence du rôle deploy (services individuels) :
-
Git : clone si absent /
git clean -fd+ pull sinon (brancheBRANCHoumain) -
docker compose stop <service> -
docker login registry.gitlab.com(deploy token en vault) -
docker compose pull <service>— seulement siTAGest fourni -
IMAGE_TAG=<tag> docker compose up -d <service> -
Pause 10s, vérifie que le container tourne (
docker ps) -
Rescue : en cas d’échec, relance
up -d(rollback) puis échoue avec message explicite
7. make setup-cron
Configure les backups automatiques sur le serveur (à lancer une seule fois).
make setup-cron
Ce que fait setup-cron.yml :
-
Installe Ansible sur le serveur cible
-
Copie
.vault_password(racine du repo) →/opt/.vault_passwordsur le serveur (mode 600, root) -
Supprime les anciens crons WordPress (
backup-clarajob-daily,backup-marketisia-daily) -
Crée 3 crons (utilisateur root, logs →
/var/log/ansible-backup.log) :
| Cron | Heure | Commande |
|---|---|---|
|
03:00 |
|
|
04:00 |
|
|
05:00 |
|
|
|
8. Équivalents Ansible Directs
Le Makefile est un simple wrapper. Tu peux appeler Ansible directement (toujours depuis le dossier ansible/ — exigé par ansible.cfg) :
cd sever-admin/ansible
# Backup
ansible-playbook playbooks/backup.yml -e target_app=clarajob-ddl
# Restore
ansible-playbook playbooks/restore.yml \
-e "target_app=clarajob-mongo dump_file=clarajob-mongo-2026-07-26_050000.archive"
# Deploy
ansible-playbook playbooks/deploy.yml -e "target_app=clarajob-sa image_tag=v1.2.0"
# Cibler la machine locale
ansible-playbook playbooks/deploy.yml -e "target_app=clarajob-sa target_hosts=local"
Le --vault-password-file est automatique : ansible.cfg déclare vault_password_file = ~/.vault_sever_admin.
9. Diagnostics (commandes shell, PAS make)
Le Makefile ne fournit pas de commandes de logs/status. Pour diagnostiquer, connecte-toi au serveur :
# Connexion SSH (user = admin, pas debian)
ssh -i ~/.ssh/serverAdminSSHKeypair.pem admin@18.158.207.98
# Puis sur le serveur :
docker ps # containers actifs
docker logs clarajob-front-api --tail 100 # logs d'un service
docker logs -f marketisia-front-api # logs en continu
df -h # espace disque
docker stats --no-stream # CPU/RAM par container
ls -lh /home/admin/app/sever-admin/db-config/dump/clarajob-ddl/ # dumps disponibles
cat /var/log/ansible-backup.log # logs des backups cron
crontab -l # crons actifs
Alternative sans SSH : Dozzle (logs web, port 9999), Beszel (métriques, port 8090), Grafana/Loki (logs centralisés, port 3000). Voir Monitoring.
10. Erreurs Courantes
# "❌ Usage: make backup APP=..."
→ Tu as oublié APP. Il est obligatoire, sans défaut.
# "Application 'xxx' inconnue. Apps valides : ..."
→ APP n'est pas dans la liste des 19 cibles du playbook deploy.yml.
# "ERROR! Attempting to decrypt but no vault secrets found"
→ ~/.vault_sever_admin absent ou illisible :
echo "MotDePasseVault" > ~/.vault_sever_admin && chmod 600 ~/.vault_sever_admin
# "Le fichier dump '...' est introuvable"
→ Le DUMP doit être le nom exact d'un fichier présent dans
db-config/dump/<service>/ (lister avec ls sur le serveur).
# "Le dump ... est vide ou n'a pas été créé"
→ Credentials DB faux dans vault.yml, ou base vide. Vérifier avec :
ansible-vault view inventory/group_vars/all/vault.yml
11. Prochaines Étapes
-
Workflow complet de déploiement → Déploiement
-
Détail backup/restore → Backup & Restore
-
Problèmes → Dépannage