Set-OPS-Public/roles/serveur_debian
Daniel Allaire 4d37570c0c frontière : la sortie générale est déclarée, pas subie
Le devis se terminait par `block out log all` avec une seule règle sortante
(le relais SMTP). Appliqué tel quel, il coupait la flotte d'Internet : plus
d'apt, plus de NTP, plus de récursion DNS. Rien ne le signalait — la ligne
la plus lourde de conséquences du devis, posée à la suite des autres.

La sortie est déclarée dans le registre, donc dérivée :
- `serveur_debian` (socle, 14 hôtes) : 443 et 80 pour les dépôts apt, 123/udp
  pour l'horloge — une dérive fait échouer step-ca et le SSO des semaines
  après la cause ;
- `client_unbound` : 53 udp et tcp, la récursion depuis la racine qu'implique
  `client_unbound_transitaires: []`. Le TCP est le repli obligatoire dès
  qu'une réponse DNSSEC dépasse la taille UDP.

Le devis passe de 6 à 11 règles, et sa section 5 énonce le default-deny
sortant, le nombre de règles qui l'accompagnent, et où déclarer un besoin
oublié — jamais à la main dans le pare-feu.

Vérifié : les nftables d'hôte sont inchangés, octet pour octet. Le pair
`externe` reste sauté par resoudre_flux.

Non déclaré volontairement : le rôle `chrony` n'est référencé par aucun
groupe ni playbook — un flux pour lui aurait été une règle morte.

Preuves : 24 OK, 0 échec.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-02 13:10:45 -04:00
..
meta frontière : la sortie générale est déclarée, pas subie 2026-08-02 13:10:45 -04:00
README.md docs : un README par rôle (12 manquants) + carte remise à l'état du code 2026-07-29 11:32:06 -04:00

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.