🌱 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.