Aller au contenu

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 debug innocente 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.md a 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)