🌱 La semence numérique

  • Une clé/SSD bootable Debian 12.10 totalement offline-first.

  • Elle embarque :

    • Tous les dépôts APT tiers (Debian, Proxmox, PBS, Icinga, Prometheus/Grafana, PostgreSQL PGDG, Nginx stable, Docker CE, GitLab CE, Smallstep step-ca, PowerDNS).

    • Un registry Docker offline avec images gelées (Mailcow, acme-dns).

    • Des tarballs signés (Keycloak, Nextcloud, Gitea, acme.sh).

    • Les ISO essentiels (Proxmox VE, Debian GenericCloud, OPNsense).

  • Après installation, aucune dépendance à Internet : tout est servi localement.


🖥️ L’orchestrateur

Machine centrale qui joue plusieurs rôles :

  • Source APT : publie /repo/stable pour tout le parc.

  • Registry Docker offline : distribue Mailcow & co.

  • PKI interne : step-ca + provisionneur ACME (HTTP-01 et DNS-01).

  • Publication anchors (/.well-known/ca), OCSP/CRL.

  • ISO store : Proxmox, Debian cloud, OPNsense.

  • Forge GitLab CE : CI/CD au cœur des opérations.

  • Runner GitLab : exécute pipelines de build/test/deploy.


⚙️ GitLab CE au centre

  • Instancié dès la phase 1, il héberge :

    • Repos seed :

      • infra/apt-mirrors → pull/snapshot/publish/promotion APT.

      • infra/docker-registry-offline → images gelées.

      • infra/pki-acme → step-ca + clients.

      • infra/ansible-roles → rôles (nginx, postgres, dns, dhcp, keycloak, nextcloud, mailcow, gitlab…).

      • infra/isos → ISO + manifestes.

    • Pipelines CI/CD :

      • make pull → snapshot → staging → test → promote manuel.

      • Déploiement Ansible → smoketests → conformité.

  • GitLab devient le moteur de GitOps pour ton écosystème.


🔑 Rôles Ansible

  • Chaque service est encapsulé en rôle Ansible (nginx-core, postgres-server, dns-unbound, dhcp-kea, keycloak, nextcloud, icinga-server, mailcow, gitlab-ce, pve-node…).

  • Les rôles :

    • Installent/configurent le service,

    • Déploient leur sonde Icinga dédiée,

    • Exposent des variables pour paramétrage.


📡 Sondes Icinga (un rôle = une sonde)

  • Concept : pour chaque rôle → un plugin check_role_<role>.

  • Vérifie la conformité du rôle : service actif, ports écoutés, version min, certs valides, etc.

  • La sonde est :

    • Installée par le rôle lui-même,

    • Exécutée par Icinga,

    • Réutilisable en CI/CD (GitLab job “verify”).

  • Exemple :

    • check_role_nginx → nginx.service actif, port 80/443, conf valide, cert non expiré.

    • check_role_postgres → port 5432, version ≥ min, connexion locale TLS.

    • check_role_stepca → ACME directory OK, anchors publiés, OCSP répond.


📚 Documentation

  • Inventaire YAML v3 : source unique de vérité pour dépôts/images/tarballs.

  • Scripts squelettes : pull_debmirror.sh, pull_docker.sh, pull_tarballs.sh, setup_step_ca.sh, acme_client_profile.sh

  • Makefile : cibles pull, snapshot, publish, promote, pki, http01, docker, tarballs.

  • Manuel “Semence Numérique” : plan détaillé, style “Formation Proxmox” : notions + expérimentation, étapes claires.


🚀 Valeur ajoutée

  • Auto-suffisance totale : l’écosystème peut naître et se reproduire sans Internet.

  • GitOps : GitLab CE trace, versionne et automatise tout (dépôts, rôles, PKI, ISO, tests).

  • Conformité garantie : un rôle = une sonde Icinga, pipeline CI/CD bloque les promotions si non-conforme.

  • Équité : chaque tiers (Proxmox, Icinga, Prometheus, Postgres, Nginx, Docker, GitLab, Mailcow, Keycloak, Nextcloud, PKI ACME) a reçu le même soin : dépôts, scripts, rôles, sondes, smoketests.


👉 En résumé :
Nous avons posé les bases d’un orchestrateur GitLab-centré qui sert à déployer, valider et reproduire un écosystème numérique complet et souverain, garanti offline, sécurisé par PKI interne, et auto-vérifiable via Icinga et CI/CD.