--- # LE CACHE NE DOIT PAS DÉPENDRE DE LUI-MÊME POUR SE RÉPARER. # # La première version faisait `update_cache: true` à chaque passage. Sur l'hôte qui PORTE # le cache, cet `apt update` passe par le cache lui-même — et en mode hors ligne, il est # refusé. Le rôle qui devait remettre le service en ligne ne pouvait donc plus s'exécuter : # # « Failed to update apt cache after 5 retries » (mesuré le 2026-08-23, après # l'épreuve hors ligne : il a fallu réparer la machine à la main) # # Un service dont la remise en route exige qu'il fonctionne déjà est un piège. On ne # rafraîchit donc l'index qu'à la PREMIÈRE installation, quand aucun cache n'existe encore # et qu'`apt` va forcément à l'amont. - name: Le cache est-il déjà installé ? ansible.builtin.stat: path: /usr/sbin/apt-cacher-ng register: serveur_artefacts_present - name: Installer le cache d'artefacts ansible.builtin.apt: name: "{{ serveur_artefacts_paquets }}" state: present update_cache: "{{ not serveur_artefacts_present.stat.exists }}" when: not ansible_check_mode - name: Assurer le répertoire de cache ansible.builtin.file: path: "{{ serveur_artefacts_cache }}" state: directory owner: apt-cacher-ng group: apt-cacher-ng mode: "0755" when: not ansible_check_mode # apt-cacher-ng lit TOUS les `*.conf` de son répertoire, par ordre alphabétique, et le # dernier lu gagne. Le préfixe `zzz-` place donc notre configuration après celle du # paquet Debian et celle de debconf, sans avoir à les éditer — on ajoute, on ne remplace # pas. Une valeur posée ici l'emporte, et `apt purge` rend la machine à son état d'origine. - name: Déployer la configuration Set-OPS ansible.builtin.template: src: zzz-setops.conf.j2 dest: /etc/apt-cacher-ng/zzz-setops.conf owner: root group: root mode: "0644" notify: Redémarrer le cache d'artefacts - name: Activer et démarrer le cache d'artefacts ansible.builtin.systemd: name: "{{ serveur_artefacts_service }}" enabled: true state: started when: not ansible_check_mode - name: Appliquer les redémarrages avant de vérifier ansible.builtin.meta: flush_handlers # ÉCRIRE, PUIS RELIRE (D-68). Un service « active » qui n'écoute pas sur le port attendu # est un vert sur un périmètre vide : les clients le découvriraient à leur premier # `apt update`, c'est-à-dire au pire moment. - name: Le cache écoute-t-il vraiment ? ansible.builtin.wait_for: host: "127.0.0.1" port: "{{ serveur_artefacts_port }}" timeout: 30 when: not ansible_check_mode