Set-OPS-Public/roles/hosts_statiques
Daniel Allaire 1363ebff59 acces : le runner peut enfin entrer, et trois silences fermes
ssh_baseline gere les cles d'administration declarees au plan, avec un `etat`
par entree : revoquer devient un changement de plan, pas une visite sur chaque
machine. Pas d'exclusive -- il effacerait la cle de cloud-init et fermerait la
flotte a tout le monde.

cloud-init reecrivait /etc/hosts a chaque demarrage et effacait le plancher de
resolution. Constate sur infra-dns-01 apres un redemarrage : six entrees
perdues, revelees deux jours plus tard par un apt update qui ne resolvait plus.

requirements.yml ne declarait pas ansible.posix ni community.docker, pourtant
utilisees. Ca marchait chez le mainteneur, pas sur un runner. Et le cache des
collections suivait l'existence du fichier au lieu de son contenu.

Enfin : deux `when` sur une meme tache, c'est un seul -- le dernier. Le
check-mode avait disparu en silence.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-24 15:50:37 -04:00
..
defaults plancher : nommer ce qui est hors de l'ecosysteme 2026-08-23 10:09:08 -04:00
tasks acces : le runner peut enfin entrer, et trois silences fermes 2026-08-24 15:50:37 -04:00
templates plancher : nommer ce qui est hors de l'ecosysteme 2026-08-23 10:09:08 -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

hosts_statiques

Plancher de résolution : génère /etc/hosts depuis l'inventaire, pour que tout l'écosystème se résolve par nom même DNS éteint.

Rôle

  • Génère /etc/hosts (template hosts.j2) à partir des hôtes actifs de l'inventaire : IP, nom court, FQDN interne.
  • Alias d'exposition (optionnel, actif par défaut) : pose <IP de l'edge> <FQDN exposé> pour chaque application qui déclare un expose dans le plan — la résolution des services publiés ne dépend donc pas non plus du DNS.

Pourquoi

C'est ce qui rend l'ordre de reconstruction possible : appliqué dans la couche socle (via playbooks/groupes/serveur_debian.yml), il donne la résolution par nom avant que serveur_powerdns n'existe. Sans lui, tout service référençant un FQDN interne (resoudre_base, resoudre_annuaire, certificats step_ca…) échouerait au premier déploiement d'une instance neuve.

Les trois couches de résolution : ce plancher → PowerDNS autoritatif → Unbound local (client_unbound, opt-in). Cf. docs/dns-interne.md.

Variables

Variable Défaut Rôle
hosts_statiques_actif true Génère (ou non) /etc/hosts
hosts_statiques_domaine {{ domaine_interne }} Suffixe des FQDN
hosts_statiques_publier_expositions true Ajoute les alias expose → edge
hosts_statiques_expositions [] Calculé par le rôle (filtre expositions_des_applications)

Notes / limites

  • Les alias d'exposition sont best-effort : le rôle lit applications.yml et domaines.yml sur le nœud de contrôle (delegate_to: localhost, stat d'abord). Plan absent (ex. préparation du golden template) → alias simplement omis, pas d'échec.
  • Le fichier est entièrement géré par Ansible : toute ligne ajoutée à la main sur un nœud est écrasée au prochain passage. C'est voulu (source unique = le plan).
  • Postfix tourne en chroot : serveur_postfix recopie ce /etc/hosts dans /var/spool/postfix/etc/ pour que le MTA bénéficie du même plancher.

Prérequis

  • domaine_interne défini ; setops_plan_dir pour les alias d'exposition.
  • Filtre expositions_des_applications (filter_plugins/).