[infra] Déploiement complet : MLflow, collecteur et migrations posés par le rôle Ansible #113
Labels
No labels
Compat/Breaking
EC01
EC02
EC03
EC04
EC05
EC06
Kind/BDD
Kind/Back
Kind/Bug
Kind/CICD
Kind/Cloud
Kind/Contenu
Kind/Data
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Front
Kind/IA
Kind/Infra
Kind/Monitoring
Kind/Security
Kind/Testing
Portée/Post-jury
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
ops/alerte
No milestone
No project
No assignees
1 participant
Notifications
Due date
Depends on
Reference
g2/enervision#113
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Exigence couverte
ENF-09, ENF-10, EF-01
Épreuve servie
EC03 · CI/CD et qualité
Charge estimée
0,5 j.h
Ce qu'on veut obtenir
Rendre le déploiement réellement complet, pour qu'une mise en production se résume à déclencher la chaîne et à regarder le résultat.
Le constat qui motive ce ticket. Le clone du serveur date du 2 septembre à 14 h 06. Tout ce qui a été fusionné depuis — PostgreSQL sur Docker, MLflow, les sept tables de la zone or, le collecteur — n'existe que dans
develop. Ce qui tourne sur la machine y a été posé à la main, service par service, et rien de cela ne se rejoue.Le rôle
appfait déjà le plus dur : il cloner le dépôt, rend les secrets depuis le coffre, produit le certificat TLS et démarre les piles. Il lui manque trois choses, et ces trois choses sont exactement ce qui empêche la chaîne de données de tourner toute seule.Hors de ce ticket, et volontairement : conteneuriser l'API et le tableau de bord. C'est un morceau plus long, il aura le sien.
Critères d'acceptation
mlflowfigure dansapp_stackset démarre par le playbook, commepostgresetminio. Il tourne aujourd'hui parce que quelqu'un l'a lancé à la main ; une réinstallation le perdrait.httpxetminio, sont installées par le rôle. Elles sont absentes de la machine aujourd'hui :python3 -m collector.currentéchoue enModuleNotFoundErroravant même de lire sa configuration.deploysont posées par le rôle, la relèvecollecte-current.shet les alertescollecte-alertes.sh, toutes deux à la minute. C'est le geste que l'ADR 0008 annonce comme « posé à la main aujourd'hui ».services/collector/bin/*.sharrivent exécutables sur le serveur. Livrés en100644, cron sort enPermission deniedsans rien journaliser d'utile.enervision_prodne connaît que0007, les migrations0001à0006n'y sont jamais passées.endpoint=currentaugmente entre deux relevés espacés de trois minutes.docs/runbooks/deploiement.mddit ce qui reste manuel après ce ticket, s'il reste quelque chose, et comment déclencher la chaîne sans passer parmain.Comment on le vérifie
Commande ansible-playbook -i inventory/hosts.ini site.yml --tags app, joué deux fois
Preuve la seconde exécution ne rapporte aucun « changed » sur le cron ni sur les paquets
Preuve sudo -u deploy crontab -l montre les deux lignes
Preuve le décompte d'objets bronze sous endpoint=current, à trois minutes d'intervalle
Hors périmètre
La conteneurisation de l'API et du tableau de bord, qui n'ont pas de pile dans
infra/compose/. C'est le vrai dernier écart au « merger suffit », mais il est d'une autre taille et il aura son ticket.Le socle système — pare-feu, durcissement SSH, moteur Docker — qui reste délibérément hors du déploiement continu, comme
deploy.ymll'explique : un merge ne doit pas pouvoir le retoucher sans relecture humaine.