2026-06-24 20:17:46 -04:00
|
|
|
---
|
|
|
|
|
common_packages_list:
|
|
|
|
|
- sudo
|
|
|
|
|
- openssh-server
|
|
|
|
|
- qemu-guest-agent
|
|
|
|
|
- cloud-init
|
|
|
|
|
- cloud-guest-utils
|
|
|
|
|
- python3
|
|
|
|
|
- python3-apt
|
|
|
|
|
- python3-pip
|
|
|
|
|
- acl
|
|
|
|
|
- curl
|
|
|
|
|
- wget
|
|
|
|
|
- ca-certificates
|
|
|
|
|
- gnupg
|
|
|
|
|
- git
|
|
|
|
|
- vim
|
|
|
|
|
- nano
|
|
|
|
|
- bash-completion
|
|
|
|
|
- tmux
|
|
|
|
|
- rsync
|
|
|
|
|
- unzip
|
|
|
|
|
- zip
|
|
|
|
|
- tar
|
|
|
|
|
- jq
|
|
|
|
|
- htop
|
|
|
|
|
- iotop
|
|
|
|
|
- iftop
|
|
|
|
|
- sysstat
|
|
|
|
|
- lsof
|
|
|
|
|
- ncdu
|
|
|
|
|
- tree
|
|
|
|
|
- file
|
|
|
|
|
- less
|
|
|
|
|
- dnsutils
|
|
|
|
|
- iproute2
|
|
|
|
|
- iputils-ping
|
|
|
|
|
- net-tools
|
|
|
|
|
- traceroute
|
|
|
|
|
- mtr-tiny
|
|
|
|
|
- tcpdump
|
|
|
|
|
- netcat-openbsd
|
|
|
|
|
- socat
|
|
|
|
|
- chrony
|
|
|
|
|
- logrotate
|
|
|
|
|
- unattended-upgrades
|
|
|
|
|
- apt-listchanges
|
|
|
|
|
- needrestart
|
2026-08-07 09:30:48 -04:00
|
|
|
|
|
|
|
|
# Attente du verrou dpkg (secondes). Genereux : au premier demarrage, les mises a
|
|
|
|
|
# jour automatiques de Debian le tiennent par vagues pendant plusieurs minutes.
|
|
|
|
|
common_packages_lock_timeout: 300
|
proxmox : le pare-feu ne s'arme que dans le SDN — et 45e preuve
Le decoupage du site en quatre zones a revele un defaut qui dormait dans le
moteur. `firewall=1` sur l'interface d'une VM fait passer tout le trafic ponte
par conntrack. Sur un VNet SDN c'est sans consequence : en EVPN le routage
inter-VNet se fait dans le VRF, SUR LE NOEUD, et le flux ne quitte jamais
l'hyperviseur. Sur un pont classique route par une frontiere externe, deux VM du
MEME noeud dans deux VLAN differents ne se parlent qu'en EPINGLE : la trame sort
par le lien physique, la frontiere la route, elle revient sur le meme pont. La
meme table conntrack voit alors les deux moities de la connexion, classe le
retour INVALID, et PVEFW-FORWARD le jette.
La mesure a tranche :
ops(asgard) -> pki(asgard) 0/8 dns(gandalf) -> cache(gandalf) 0/8
ops(asgard) -> forge(vishnu) 6/8 dns(gandalf) -> pki(asgard) 6/8
ops(asgard) -> cache(gandalf) 8/8 dns(gandalf) -> forge(vishnu) 8/8
Toutes les paires intra-noeud echouent, toutes les paires inter-noeuds passent.
Douze tentatives faisaient monter le compteur `ctstate INVALID` de +112 sur
asgard et +116 sur gandalf ; `firewall=0` pose, il ne bouge plus — 0 sur les
deux, pour le meme trafic.
Le defaut se deguise en panne reseau : la poignee TCP ABOUTIT, et ce sont les
paquets de DONNEES qui disparaissent. L'AC le disait dans son propre journal
(`TLS handshake error ... i/o timeout` : elle accepte et attend un ClientHello
qui n'arrive jamais). Ecartes un par un, par la mesure : regles identiques champ
par champ, alias corrects, assignation des interfaces confirmee, ARP et routes
saines, IPS desactive, shaper vide, NAT source limite a `wan`, MTU a 1500 de
bout en bout — et la taille sans effet, 100 octets se perdant comme 1460.
L'INTENTION DECLAREE NE SUFFIT PAS : un tenant declare
`proxmox_clone_parefeu_interface: true` avec `proxmox_clone_pont: vmbr1` comme
valeur PAR DEFAUT, chaque hote la remplacant par son VNet derive. L'hote qui
retombe sur `vmbr1` naitrait arme sur un pont classique. `cloner_vm_debian.yml`
croise donc l'intention avec le pont REELLEMENT utilise, et le dit quand il
desarme — un desarmement muet serait le meme piege, en silence.
P45 EVALUE l'expression du playbook sur quatre cas plutot que d'en lire le
texte, dont un qui DOIT rendre vrai : sans lui, une expression constamment
fausse passerait la preuve sans rien garantir. Controle negatif verifie — le
drapeau remis a plat fait echouer la preuve.
Ce commit emporte aussi le desarmement d'`unattended-upgrades` dans
`common_packages`, jusqu'ici applique sur les machines mais pas versionne : le
verrou dpkg tenu 48 minutes par une vague de maj automatiques a coute deux
deploiements.
Le site a revele ce defaut parce qu'il a ete le premier a porter plusieurs
zones. Ce n'est pas une particularite du site : un tenant derive les siennes du
meme principe.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 19:50:53 -04:00
|
|
|
|
|
|
|
|
# --- QUI DÉCIDE DE CE QUI S'INSTALLE (2026-08-25) -----------------------------
|
|
|
|
|
#
|
|
|
|
|
# Debian arme `unattended-upgrades` et les minuteurs `apt-daily` par défaut. Set-OPS
|
|
|
|
|
# applique DÉJÀ les mises à jour, explicitement, dans ce rôle. **Deux mécanismes font le
|
|
|
|
|
# même travail sur la même flotte, et se disputent le même verrou dpkg.**
|
|
|
|
|
#
|
|
|
|
|
# Sur une machine tranquille ça ne se voit jamais. Après six redémarrages et des heures
|
|
|
|
|
# sans réseau — ce qu'a vécu le site le 2026-08-25 — `unattended-upgrades` rattrape tout
|
|
|
|
|
# son retard et tient le verrou 48 minutes. `lock_timeout` vaut 300 s : les déploiements
|
|
|
|
|
# échouent, trois fois de suite, sur une course que personne n'a décidée.
|
|
|
|
|
#
|
|
|
|
|
# Allonger l'attente serait un pansement : on patienterait plus longtemps devant un
|
|
|
|
|
# concurrent qu'on n'a pas voulu. On désarme donc, et Set-OPS reste seul maître de ce qui
|
|
|
|
|
# s'installe — un écosystème souverain ne laisse pas un démon décider seul quand redémarrer
|
|
|
|
|
# ses services.
|
|
|
|
|
#
|
|
|
|
|
# CONTREPARTIE ASSUMÉE, ET ELLE EST RÉELLE : les correctifs de sécurité ne s'appliquent
|
|
|
|
|
# plus qu'au passage de Set-OPS. C'est tenable si les déploiements sont réguliers, et ça
|
|
|
|
|
# devient une dette sinon. Mettre à `false` pour rendre la main à Debian.
|
|
|
|
|
common_packages_desarmer_maj_auto: true
|
|
|
|
|
common_packages_unites_maj_auto:
|
|
|
|
|
- apt-daily.timer
|
|
|
|
|
- apt-daily-upgrade.timer
|
|
|
|
|
- unattended-upgrades.service
|
un fichier vide existe, et une sonde pour les correctifs
LA GARDE FICHIER ENTIER, en deux corrections. Un telechargement
interrompu laisse un fichier de zero octet QUI EXISTE, et toutes les gardes
demandaient seulement s il etait la. infra-mail-01 a garde une cle
smallstep de 0 octet apres l epreuve hors ligne.
La premiere correction n a pas suffi. Ajouter le controle de taille faisait
bien s executer la tache - et le fichier faisait toujours 0 octet au
passage suivant. get_url sur une destination existante emet une requete
CONDITIONNELLE : l amont repond non modifie, le module rend ok, la ruine
reste. Le play etait vert et ne reparait rien. Il faut effacer avant de
redemander.
Controle negatif : 0 -> 1022 octets, 0 erreur apt. Cinq roles.
LA SONDE CORRECTIFS, 23e. Set-OPS desarme unattended-upgrades et applique
les correctifs au deploiement - choix defendable, le verrou dpkg a fait
decrocher une machine d une reconstruction entiere le matin meme. Mais rien
ne disait QUAND le geste etait du : une flotte pouvait deriver des mois en
restant verte.
Elle mesure les paquets de securite en attente ET depuis quand. Elle ne
lance pas apt-get update - une sonde qui rafraichit l index toutes les
quinze minutes deviendrait la cause de la panne qu elle surveille. Et le
seuil de 72 h est un choix d exploitation, pas une derivation : le
mecanisme qui applique les correctifs est un geste humain.
P64 REFUSAIT UNE DECLARATION CORRECTE. serveur_debian et serveur_durci sont
des roles de declaration pure, sans une tache ; le travail est fait par les
roles que leur playbook applique. La preuve exigeait declaration et depot
dans le meme role - vrai des vingt-deux premieres sondes, faux des qu une
sonde appartient au socle. Une garde qui force a contourner ce qu elle
protege est un defaut. Elle suit desormais le playbook du groupe.
Mesure : 21/21 machines vertes, 65 preuves, 23 sondes, 0 echec.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Crgis8CxCWkAGFA1ecBz3q
2026-09-10 17:26:35 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# --- Sonde de supervision (declaree dans roles/serveur_debian/meta/supervision.yml) ---
|
|
|
|
|
common_packages_sonde_correctifs_etat: "/var/lib/setops/correctifs-vus"
|
|
|
|
|
|
|
|
|
|
# LE SEUIL N'EST PAS DERIVE D'UN MECANISME, ET IL FAUT LE DIRE.
|
|
|
|
|
#
|
|
|
|
|
# Les autres seuils du depot se derivent de ce que la machine fait : le certificat vit
|
|
|
|
|
# 24 h, donc on alerte a 6 h ; le porteur passe toutes les 15 min, donc le `ttl` vaut six
|
|
|
|
|
# periodes. Ici, le mecanisme qui applique les correctifs est un DEPLOIEMENT — un geste
|
|
|
|
|
# humain. Aucune periode a en deriver.
|
|
|
|
|
#
|
|
|
|
|
# 72 h est donc un CHOIX D'EXPLOITATION, pas une deduction : trois jours laissent passer
|
|
|
|
|
# un week-end sans crier, et au-dela un correctif publie devient une exposition connue et
|
|
|
|
|
# acceptee. En dessous du seuil la sonde AVERTIT deja — elle ne se tait jamais sur un
|
|
|
|
|
# correctif de securite en attente, elle gradue seulement l'urgence.
|
|
|
|
|
common_packages_sonde_seuil_heures: 72
|