Some checks failed
verifier / verifier (push) Has been cancelled
serveur_artefacts (apt-cacher-ng) + client_artefacts, integration universelle qui s'eteint quand aucun hote ne porte le service et RETIRE la direction posee. Chez patient 0 : colocalise sur forge-01 -- la forge est la source, du code et des binaires. La preuve est le mode hors ligne : paquet en cache servi en 0 o/s, paquet absent refuse par un 503. Tant qu'internet repond, un apt update qui reussit ne dit pas d'ou vient l'octet. Trois lecons : apt fait heriter Acquire::https::Proxy de la valeur HTTP (d'ou 403 CONNECT denied sur les depots tiers, et smallstep injoignable) ; un service ne doit pas dependre de lui-meme pour se reparer (l'apt update du role passait par le cache hors ligne) ; et rediriger 2>/dev/null, c'est choisir de ne pas voir. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
42 lines
2 KiB
YAML
42 lines
2 KiB
YAML
---
|
|
- name: Exiger un hôte de source d'artefacts quand l'intégration est active
|
|
ansible.builtin.assert:
|
|
that:
|
|
- client_artefacts_hote | length > 0
|
|
fail_msg: >-
|
|
client_artefacts est actif mais aucun hôte ne porte `serveur_artefacts`.
|
|
Déclarer le service au plan, ou forcer client_artefacts_actif=false.
|
|
when: client_artefacts_actif | bool
|
|
|
|
- name: Diriger apt vers la source de l'écosystème
|
|
ansible.builtin.copy:
|
|
dest: "{{ client_artefacts_fichier }}"
|
|
content: |
|
|
// GÉNÉRÉ par Set-OPS (rôle client_artefacts). NE PAS éditer à la main.
|
|
// Les paquets viennent de l'écosystème, pas de six serveurs étrangers.
|
|
Acquire::http::Proxy "http://{{ client_artefacts_hote }}.{{ domaine_interne }}:{{ client_artefacts_port }}";
|
|
{% if client_artefacts_https | bool %}
|
|
Acquire::https::Proxy "http://{{ client_artefacts_hote }}.{{ domaine_interne }}:{{ client_artefacts_port }}";
|
|
{% else %}
|
|
// « DIRECT » EST OBLIGATOIRE, PAS DECORATIF (mesure du 2026-08-23).
|
|
//
|
|
// apt fait HERITER `Acquire::https::Proxy` de la valeur HTTP quand elle n'est pas
|
|
// definie. Poser le seul proxy HTTP envoyait donc AUSSI les depots tiers en HTTPS
|
|
// dans le cache, qui refuse les tunnels — a juste titre :
|
|
// « Invalid response from proxy: HTTP/1.0 403 CONNECT denied »
|
|
// et packages.smallstep.com devenait injoignable pour toute la flotte.
|
|
Acquire::https::Proxy "DIRECT";
|
|
{% endif %}
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
when: client_artefacts_actif | bool
|
|
|
|
# L'écosystème qui RETIRE sa source d'artefacts doit voir ses hôtes revenir à l'amont,
|
|
# sans quoi ils resteraient braqués sur une machine disparue et n'installeraient plus
|
|
# rien. Une intégration qui ne sait pas se retirer est un piège différé.
|
|
- name: Retirer la direction quand l'écosystème n'a pas de source
|
|
ansible.builtin.file:
|
|
path: "{{ client_artefacts_fichier }}"
|
|
state: absent
|
|
when: not (client_artefacts_actif | bool)
|