PD-12 — Rétrospective¶
1. Contexte¶
| Champ | Valeur |
|---|---|
| Story ID | PD-12 |
| Titre | Configuration GitLab Runner CI/CD |
| Domaine | infrastructure-souveraine |
| Projet | infra |
| Date complétion | 2025-01-XX |
| Verdict | ACCEPTÉ AVEC RÉSERVES |
2. Métriques¶
| Métrique | Valeur |
|---|---|
| Runners déployés | 3 |
| VPS utilisés | 2 |
| Architecture | Docker privileged + Shell + Docker isolé |
| Écart sécurité corrigé | Token exposé dans logs |
3. Learnings clés¶
-
Les specs théoriques rencontrent les contraintes opérationnelles : L'exigence "Docker isolé partout" n'est pas tenable quand on doit accéder à un VPN IPsec ou exécuter du Terraform avec état local.
-
L'isolation réseau réelle nécessite une séparation physique : Un VPS dédié pour le runner internet a été la seule solution pour garantir l'absence d'accès aux services internes.
-
Les secrets fuient facilement dans les logs Ansible : Une tâche
debuginnocente a exposé un token GitLab. La revue d'acceptabilité a permis de le détecter. -
L'architecture tri-runner est un bon compromis : Séparer les runners par niveau de confiance (privileged/shell/isolated) permet d'adapter la sécurité au contexte de chaque job.
-
La documentation opérationnelle est indispensable : Le fichier
internet-runner.mda permis de transférer la connaissance de l'architecture multi-VPS.
4. Patterns applicables¶
Nouveau pattern : Architecture tri-runner par niveau de confiance¶
# 1. Runner Docker privileged (jobs HSM, accès VPN)
runners:
ovh-docker:
executor: docker
privileged: true
network_mode: host # Accès tunnel VPN IPSec
tags: [docker, hsm, privileged]
# 2. Runner Shell (Terraform, Ansible)
runners:
ovh-shell:
executor: shell
tags: [shell, infra, terraform]
# 3. Runner Docker isolé (jobs publics, MRs externes)
runners:
internet-docker:
executor: docker
privileged: false
network_mode: bridge # Isolation réseau
tags: [docker, public, isolated]
vps: separate # VPS dédié sans VPN
Pattern confirmé : Pre-pull images Docker¶
# Évite timeouts DNS au premier run
pre_pull_images:
- docker:24.0-dind
- node:20-alpine
- python:3.11-slim
- hashicorp/terraform:1.6
5. Signal CLAUDE.md¶
Priorité haute : Revue sécurité systématique des playbooks Ansible.
### Ansible — Fuite de secrets dans les logs (2026-02-XX)
**RISQUE** : Les tâches `debug` peuvent exposer des secrets dans les logs CI.
**Checklist pré-commit** :
1. [ ] Aucun `debug: var=` sur variables sensibles
2. [ ] `no_log: true` sur tâches manipulant secrets
3. [ ] Secrets dans HashiCorp Vault (pas ansible-vault seul)
4. [ ] Variables GitLab CI/CD marquées `masked`
**Détection PD-12** : Token GitLab exposé dans logs, corrigé par `no_log: true`.
6. Conclusion¶
PD-12 a livré 3 GitLab Runners sur 2 VPS avec architecture tri-niveau (privileged/shell/isolated), intégration Vault, templates Jinja2, et documentation opérationnelle. L'écart sécurité (token exposé) corrigé en revue illustre l'importance des audits Ansible systématiques. Le pattern tri-runner est réutilisable pour toute architecture CI/CD avec contraintes de sécurité variées.
Rétrospective générée 2026-02-19 (Étape 10 batch infra-souveraine)