infra: déploiement continu — relance automatique des apps à chaque merge sur main (#95) #96
No reviewers
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
g2/enervision!96
Loading…
Reference in a new issue
No description provided.
Delete branch "gabriel/95-deploiement-continu"
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?
Ferme #95.
Contenu
.forgejo/workflows/deploy.yml: sur pushmain(etworkflow_dispatch), rejoueansible-playbook site.yml --tags app --limit prodavecrepo_version= commit fusionné. Socle système (base,deploy_user,ssh_hardening,docker) volontairement hors périmètre.group_vars/all/vault.ymlest désormais commité chiffré (ansible-vault) : la chaîne le lit, seulANSIBLE_VAULT_PASSWORDdevient un secret Forgejo, avecDEPLOY_SSH_KEY.Fiabilisation (revue interne)
ssh-keyscanavant la connexion Ansible : le conteneur du job est neuf etansible.cfgimposehost_key_checking = True.--vault-password-filepassé aussi à la commande ad hoc « État des piles » (sinon échec de déchiffrement duvault.ymlcommité).cancel-in-progress: false: unansible-playbooken cours ne doit pas être coupé (état serveur à mi-chemin).env:.tests/ci/test-deploiement-continu.shbranché dansci.yml(tourne sur chaque PR) et étendu : déclencheur, périmètre, secrets, concurrence, known_hosts, vault chiffré.Docs
docs/runbooks/deploiement.md: procédure de mise en place (générer la clé CI, jouer--tags deploy_userd'abord, créer les 2 secrets).docs/runbooks/ci.md: diagnostic, dontHost key verification failed.À faire avant que ça serve (hors dépôt)
vault_deploy_authorized_keys, recommit du vault.ansible-playbook site.yml --tags deploy_user --limit prod.DEPLOY_SSH_KEYetANSIBLE_VAULT_PASSWORDdans les secrets du dépôt.workflow_dispatchet vérifier le journal.Relu. Très propre : périmètre limité au rôle
app, coffre commité chiffré (vérifié), secrets temporaires nettoyés quel que soit le résultat, concurrence sans annulation, et le test statique du workflow est une très bonne idée.Deux petites demandes, non bloquantes :
runbooks/deploiement.md: un lien pointe surhttp://localhost:3000/...→ à passer en lien relatif, il est mort hors de ton poste..gitignoren'excluant plusinfra/ansible/**/vault.yml, le contrôle « coffre chiffré » detest-deploiement-continu.shne couvre quegroup_vars/all/vault.yml: étends-le à toutvault.yml/*.vaultcommité (chaque fichier doit commencer par$ANSIBLE_VAULT), sinon un coffre non chiffré créé ailleurs passerait la chaîne.Risque vu et accepté :
DEPLOY_SSH_KEYen secret du dépôt = tout accès write peut déployer. C'est le but, et tes garde-fous (secrets par référence seulement + relecture obligatoire) le couvrent.