- cloner_vm_debian / supprimer_vm_debian suivent SETOPS_UNDERLAY (le clonage visait le cluster du lien underlay.yml) ; sept cibles du Makefile aussi pour la voute. - site_machines.py transmet au clone la cle, le domaine et le resolveur du plan du site. - La machine qui porte le cache recoit artefacts_amorcage vide ; le socle retire alors le proxy herite du gabarit. P79 n'admet ce vide que sur la machine qui porte le cache. - serveur_icingaweb2 : la base et le compte d'amorcage apres l'installation des paquets. - genome_pousser : cle du runner, organisation genome et depots crees s'ils manquent. - common_packages : la lecture apt-daily s'execute en simulation (check_mode: false). 95 preuves (make verifier), make test passe. CHANGELOG 146. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
69 lines
3.2 KiB
YAML
69 lines
3.2 KiB
YAML
---
|
|
# LE RATTRAPAGE HERITE DU GABARIT (2026-10-08).
|
|
#
|
|
# `apt-daily.timer` et `apt-daily-upgrade.timer` sont PERSISTANTS : systemd garde la date
|
|
# de leur dernier passage (`/var/lib/systemd/timers/stamp-*`) et rattrape un passage
|
|
# manque. Une VM clonee herite de ces traces — celle d'`apt-daily` datait du 2026-06-21,
|
|
# jour de fabrication du gabarit. Elle « rattrape » donc des son demarrage, avec un delai
|
|
# aleatoire jusqu'a 60 min : a la reconstruction de Technolibre, `apt-daily-upgrade` est
|
|
# parti cinq minutes apres la naissance d'`infra-pki-01`, en pleine serie d'operations apt
|
|
# du role. Il tenait le verrou du CACHE DES ARCHIVES, qu'`apt-get` n'attend jamais
|
|
# (`DPkg::Lock::Timeout` ne couvre que dpkg) :
|
|
#
|
|
# 'apt-get autoremove' failed: E: Could not get lock /var/cache/apt/archives/lock.
|
|
#
|
|
# Une trace plus ancienne que la naissance de la machine n'est pas la sienne : on la remet a
|
|
# l'heure, et on relance le minuteur, qui recalcule son prochain passage (le matin suivant)
|
|
# sans rattraper. Les mises a jour automatiques restent armees (decision du 2026-09-11) ;
|
|
# seul disparait un passage herite. Sur une machine en service, la trace est recente :
|
|
# rien ne change.
|
|
- name: Naissance de la machine (cle d'hote SSH, posee au premier demarrage)
|
|
ansible.builtin.stat:
|
|
path: /etc/ssh/ssh_host_ed25519_key.pub
|
|
register: common_packages_naissance
|
|
|
|
- name: Traces des minuteurs apt persistants
|
|
ansible.builtin.stat:
|
|
path: "/var/lib/systemd/timers/stamp-{{ item }}"
|
|
loop: "{{ common_packages_unites_maj_auto | select('match', '.*[.]timer$') | list }}"
|
|
register: common_packages_traces
|
|
|
|
- name: Remettre a l'heure une trace heritee du gabarit
|
|
ansible.builtin.file:
|
|
path: "{{ item.stat.path }}"
|
|
state: touch
|
|
mode: "0644"
|
|
loop: >-
|
|
{{ common_packages_traces.results | selectattr('stat.exists')
|
|
| selectattr('stat.mtime', 'lt', common_packages_naissance.stat.mtime | default(0))
|
|
| list }}
|
|
loop_control:
|
|
label: "{{ item.item }}"
|
|
register: common_packages_traces_remises
|
|
when: common_packages_naissance.stat.exists
|
|
|
|
# Relancer recalcule le prochain passage d'apres la trace neuve. Relancer un minuteur ne
|
|
# declenche pas sa cible.
|
|
- name: Relancer les minuteurs dont la trace a ete remise
|
|
ansible.builtin.systemd_service:
|
|
name: "{{ item.item.item }}"
|
|
state: restarted
|
|
loop: "{{ common_packages_traces_remises.results | default([]) | selectattr('changed') | list }}"
|
|
loop_control:
|
|
label: "{{ item.item.item }}"
|
|
|
|
# UN PASSAGE DEJA PARTI se termine avant nos operations apt, plutot que de se les disputer.
|
|
# `is-active` rend 0 si l'une au moins des unites tourne.
|
|
# `check_mode: false` : une LECTURE. Sautee en simulation, elle n'avait jamais de `rc`, la
|
|
# condition `until` ne se remplissait pas, et `--check` echouait la apres 30 essais sur
|
|
# chaque machine (mesure le 2026-10-13, premiere simulation du site de TechnoLibre).
|
|
- name: Attendre la fin d'un passage apt automatique deja en cours
|
|
ansible.builtin.command:
|
|
argv: ["systemctl", "is-active", "--quiet", "apt-daily.service", "apt-daily-upgrade.service"]
|
|
register: common_packages_passage
|
|
check_mode: false
|
|
changed_when: false
|
|
failed_when: false
|
|
until: common_packages_passage.rc != 0
|
|
retries: 30
|
|
delay: 10
|