--- # Alias d'exposition (best-effort) : dérivés du plan si celui-ci est disponible. - name: Vérifier la présence des registres du plan (sur le nœud de contrôle) ansible.builtin.stat: path: "{{ item }}" register: hosts_statiques_plan delegate_to: localhost # les registres du plan vivent sur le nœud de contrôle become: false # lire un fichier ne nécessite pas de privilèges loop: - "{{ setops_plan_dir }}/applications.yml" - "{{ setops_plan_dir }}/domaines.yml" loop_control: label: "{{ item | basename }}" when: - hosts_statiques_actif | bool - hosts_statiques_publier_expositions | bool - setops_plan_dir is defined - name: Charger les registres applications et domaines (si présents) ansible.builtin.include_vars: file: "{{ item }}" loop: - "{{ setops_plan_dir }}/applications.yml" - "{{ setops_plan_dir }}/domaines.yml" loop_control: label: "{{ item | basename }}" when: - hosts_statiques_actif | bool - hosts_statiques_publier_expositions | bool - (hosts_statiques_plan.results | default([]) | selectattr('stat.exists', 'defined') | selectattr('stat.exists') | list | length) == 2 - name: Dériver les alias d'exposition (FQDN exposés → edge qui les sert) ansible.builtin.set_fact: hosts_statiques_expositions: >- {{ {'applications': applications | default({})} | expositions_des_applications({'domaines_publics': domaines_publics | default({})}) }} when: - hosts_statiques_actif | bool - hosts_statiques_publier_expositions | bool - name: Générer /etc/hosts depuis l'inventaire (plancher de résolution, indépendant du DNS) ansible.builtin.template: src: hosts.j2 dest: /etc/hosts owner: root group: root mode: "0644" when: hosts_statiques_actif | bool