Mesure sur les quatorze : aucune sortie TCP vers une adresse publique, apt par le cache, noms autoritaires en local, unattended-upgrades masked. Et quatre pairs NTP publics par machine. Le role chrony posait le fuseau et installait le demon sans jamais toucher a ses sources : le defaut de Debian tenait depuis le premier jour, herite et jamais choisi. L autorite est la frontiere, par decision de l exploitant. Elle etait deja stratum 2 et ecoutait en 123 ; il ne manquait que le passage. 9 anciennes regles port 123 vers !SETOPS_INTERNES retirees, 9 regles nommees vers SETOPS_FRONTIERE posees : le changement resserre autant qu il centralise. Deux chemins parce que la topologie en a deux. Un tenant n atteint pas la frontiere par sa passerelle de zone — tenue par le SDN — mais par le lien de transit. Une machine du site a la frontiere pour passerelle directe. Les deux valeurs sont derivees de l underlay, via reseau_transit() plutot que d un prefixe d adresse qui aurait menti chez le prochain hebergeur. La patte face aux tenants manquait a opnsense_if_zones, pour la meme raison que grappe-controle la veille. Sonde horloge ecrite en meme temps : synchronisee ET contre la source DECLAREE. Une machine peut etre parfaitement a l heure contre quatre serveurs publics — c est exactement l etat d avant. 14 tenant + 7 site, toutes disciplinees, sources publiques = 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q |
||
|---|---|---|
| .. | ||
| meta | ||
| README.md | ||
serveur_debian
Rôle-catégorie du socle : il ne porte aucune tâche. Son unique contenu est
meta/flux.yml — la déclaration du plan de gestion (SSH) de tout nœud de la flotte.
Pourquoi un rôle sans tâches
Le résolveur de flux (scripts/resoudre_flux.py, make flux) agrège les
roles/<rôle>/meta/flux.yml par nom de groupe. Le groupe serveur_debian est le socle
appliqué à tous les hôtes ; c'est donc ici que se déclare le flux SSH d'administration.
⚠️ Critique : sans cette déclaration, les rulesets nftables générés (
nftables_baseline,policy drop) couperaient l'accès Ansible/SSH à toute la flotte.
Le travail réel
Il est fait par le playbook du groupe, playbooks/groupes/serveur_debian.yml, qui applique
dans l'ordre :
| Rôle | Apport |
|---|---|
common_packages |
Paquets de base |
hosts_statiques |
Plancher de résolution /etc/hosts (indépendant du DNS) |
qemu_guest_agent |
Agent invité Proxmox |
cloud_init |
Cohérence du premier démarrage |
sudo_ansible |
Compte de déploiement |
chrony |
Horloge (fuseau_horaire) |
ssh_baseline |
Base SSH |
systemd_ssh_auto |
Démarrage SSH fiable |
motd |
Bannière |
Le playbook refuse toute cible non-Debian (assertion ansible_facts.distribution).
Place dans l'ordre
Couche socle (docs/couches-deploiement.yml) — la première. Le durcissement
(serveur_durci) vient juste après, tout le reste ensuite.
Notes
- Ajouter un flux réseau du socle (pas d'un service) se fait ici, pas ailleurs.
hosts_statiquesétant appliqué ici, la résolution par nom fonctionne dès le socle, avant que PowerDNS existe — c'est ce qui permet l'ordre de reconstruction from-zero.