# /etc/hosts — GÉNÉRÉ par Set-OPS (rôle hosts_statiques) depuis l'inventaire. # Plancher de résolution interne, indépendant du serveur DNS. NE PAS éditer à la main. 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters # --- Écosystème (dérivé du plan ; chaque hôte → son IP réelle) --- # LE FQDN EN PREMIER, le nom court en alias. `hostname -f` rend le PREMIER nom trouve # pour l'adresse de la machine : avec le nom court en tete, toute la flotte se croyait # appelee « mon-01 » et non « mon-01.chezlepro.internal ». Consequence mesuree le # 2026-08-12 : `icinga2 api setup` emettait un certificat CN=mon-01/SAN=mon-01, que # personne ne pouvait verifier en appelant par le FQDN. Le meme piege attend tout ce qui # se nomme par `hostname -f` — Postfix (myhostname), les journaux, les certificats. {% set fleet = (groups.get('hotes_actifs', []) + groups.get('hotes_planifies', [])) | unique | sort %} {% for h in fleet if hostvars[h].ansible_host is defined %} {{ "%-15s" | format(hostvars[h].ansible_host) }} {{ (h ~ '.' ~ hosts_statiques_domaine ~ ' ') if hosts_statiques_domaine else '' }}{{ h }} {% endfor %} {% if hosts_statiques_publier_expositions | default(false) and hosts_statiques_expositions %} # --- Alias d'exposition (FQDN publics → l'edge qui les sert) --- {% for expo in hosts_statiques_expositions %} {% set edge_hosts = groups.get(expo.edge, []) %} {% if edge_hosts and hostvars[edge_hosts[0]].ansible_host is defined %} {{ "%-15s" | format(hostvars[edge_hosts[0]].ansible_host) }} {{ expo.fqdn }} {% endif %} {% endfor %} {% endif %}