diff --git a/CHANGELOG.md b/CHANGELOG.md index 7802924..8d899ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # CHANGELOG — Set-OPS +## 2026-09-30 (54) — Chezlepro au bout ; Technolibre arrêtée par un verrou dpkg + +**Chezlepro** (lancée par l'exploitant, reprise `DEPUIS=parefeu` après (53)) : pare-feu 13/13 +sans flux perdu, les 7 jeux d'état **restaurés** depuis les instantanés de 15:59. Silence de +douze minutes pendant `parefeu` : la sortie du Python enfant restait dans son tampon (tuyau) — +les sous-commandes écrivent désormais sans tampon. + +**Technolibre** (lancée par l'exploitant) : arrêt à `monter`, `mon-01` en échec dans +`common_packages` — `apt-get dist-upgrade` refusé, verrou dpkg tenu par +`unattended-upgrades`, né avec la VM. La tâche portait pourtant `lock_timeout: 300` : il ne +protège que la vérification du MODULE ; `apt-get`, appelé ensuite, n'attend pas — APT 3.0 +ne donne d'attente qu'à la commande `apt` (`Binary::apt::DPkg::Lock::Timeout "120"`). Le +verrou a été repris entre les deux. **Correction** : `DPkg::Lock::Timeout` posé pour tout +appel d'APT (`/etc/apt/apt.conf.d/10setops-verrou`), en toute première tâche du rôle. +Rien à voir avec la restauration : un tirage au sort du premier démarrage, que la troisième +reconstruction de Chezlepro n'avait pas tiré. + ## 2026-09-30 (53) — Troisième reconstruction (Chezlepro, lancée par l'exploitant) : arrêtée au pare-feu L'exploitant a lancé lui-même `make reconstruire-locataire TENANT=OPS-Chezlepro diff --git a/roles/common_packages/tasks/main.yml b/roles/common_packages/tasks/main.yml index 18b3726..14ea6a2 100644 --- a/roles/common_packages/tasks/main.yml +++ b/roles/common_packages/tasks/main.yml @@ -6,6 +6,29 @@ # # Attendre ici plutot que seulement avant le playbook : le verrou peut etre repris # ENTRE deux taches, ce qu'une verification ponctuelle en amont ne peut pas empecher. +# APT-GET ATTEND LE VERROU, LUI AUSSI (2026-09-30). +# +# `lock_timeout` ne protege que la verification faite par le MODULE apt. Pour une mise a +# niveau, le module lance ensuite `apt-get dist-upgrade` — qui, lui, n'attend pas : APT 3.0 +# ne donne d'attente (120 s) qu'a la commande `apt` (`Binary::apt::DPkg::Lock::Timeout`), +# pas a `apt-get`. Entre la verification et l'appel, `unattended-upgrades` a repris le +# verrou sur `mon-01`, ne une minute plus tot, et la reconstruction de Technolibre s'est +# arretee : +# +# E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 1198 (unattended-upgr) +# +# On le dit donc a APT LUI-MEME, pour tout appel : c'est un fichier, pas une operation apt, +# il peut passer en tout premier. +- name: Faire attendre le verrou dpkg a tout appel d'APT (apt-get compris) + ansible.builtin.copy: + dest: /etc/apt/apt.conf.d/10setops-verrou + content: | + // Gere par Set-OPS (role common_packages). Voir tasks/main.yml. + DPkg::Lock::Timeout "{{ common_packages_lock_timeout }}"; + owner: root + group: root + mode: "0644" + # DÉSARMER AVANT TOUTE OPÉRATION APT, ET NON APRÈS. # # Une tâche apt placée avant celle-ci attendrait le verrou que celle-ci doit justement