Beryl::CLI::FleetJob
Tâche de flotte pour beryl os-upgrade|upgrade <société|domaine> --apply :
CANARI puis PARALLÈLE LIMITÉ, état sur disque lisible par --status.
Chaque serveur est traité par un processus ENFANT beryl <kind> <fqdn> --apply … (le chemin un-serveur, déjà éprouvé) : sa sortie
va dans son propre journal (pas d'entrelacement), il écrit son état dans
<fqdn>.json (variable BERYL_JOB_STATE). L'orchestrateur :
. CANARI : traite les serveurs UN PAR UN jusqu'au premier qui a réellement
quelque chose à installer (un serveur déjà à jour ne valide rien) ; s'il
échoue, le reste est ANNULÉ — un correctif qui casse le démarrage se voit
sur un serveur, pas sur quinze ;
. puis le reste en PARALLÈLE (--parallel N) : un serveur qui plante ne
bloque aucun autre.
Dossier d'une tâche : $XDG_STATE_HOME/beryl/jobs/<kind>/<id>/
(job.json, <fqdn>.json, <fqdn>.log, orchestrateur.log). Rien de
propre au Mac : la même tâche pourra tourner sur un bastion.
Constants
Serveurs traités à la fois quand ni --parallel=N ni le réglage
parallel: de la configuration ne le disent.
Instance methods
Objet et corps du récapitulatif. Pur.
Crée la tâche (dossier + job.json + état « en attente » par serveur).
Relance l'orchestrateur en arrière-plan : nohup (survit à la fermeture
du terminal) et, s'il existe (macOS), caffeinate -i (pas de veille tant
que la tâche tourne). Sortie dans orchestrateur.log.
Dossier de la tâche id, ou de la plus récente.
Premier serveur en attente dont le groupe n'est pas occupé. Pur.
Serveurs à la fois : --parallel=N s'il est donné, sinon le PLUS PETIT
réglage parallel: des serveurs de la portée (prudence quand elle mêle
des groupes), sinon DEFAULT_PARALLEL. Pur côté config.
Valeur de --parallel=… : N ≥ 1, 0 pour no/non (parallèle coupé,
comme --no-parallel), -1 si illisible. Pur.
Côté ENFANT : rapporte l'étape/le résultat si la variable est posée
(no-op hors tâche). started_at est conservé d'un rapport à l'autre.
child_cmd : commande de base de l'enfant (exécutable + options globales),
le fqdn et les options d'os-upgrade sont ajoutés ici.
Lance l'enfant d'UN serveur et renvoie son état final. Un enfant qui sort en erreur sans l'avoir rapporté (plantage) est noté en ÉCHEC avec la fin de son journal : rien ne se perd en silence.
Commande de base d'un processus enfant : CE binaire + options globales (racine de config, transport), pour que l'enfant voie la même config.