Beryl::CLI::Info
beryl info [host] [--usage] : inventaire des serveurs.
- sans host : tableau récap de TOUS les hosts (gamme, CPU, RAM, disques)
+ total parc. Lecture HORS-LIGNE (depuis les host.yml
alimentés par
beryl scan— instantané, pas de réseau). - avec host : fiche détaillée d'un host.
- --usage : utilisation LIVE (zpool/df/uptime via SSH) en plus.
Constants
URL du dépôt de l'outil de conversion PDF (message d'erreur s'il manque).
Tri des tableaux .sortable au clic sur l'en-tête (numérique via data-sort,
sinon alphabétique ; bascule asc/desc). Vanilla JS, aucune dépendance.
Feuille de style du site (écrite une fois dans info/style.css).
Class methods
Document AsciiDoc récapitulatif : synthèse + matériel + réseau vRack +
(si usage fourni) utilisation disque LIVE. Régénérable :
beryl info --adoc [--usage] <périmètre> > inventaire.adoc.
Page détaillée d'UN serveur (fiche + son utilisation disque). live_os =
OS déduit du serveur (uname -sr) ; remplace l'os: théorique du YAML.
Page d'index : synthèse + alertes + tableaux TRIABLES (clic sur l'en-tête), avec lien vers la page de chaque serveur.
Convertit un pourcentage d'UTILISÉ (ex. zpool cap, df Capacity) en
pourcentage de LIBRE (36% → 64%). Renvoie la chaîne d'origine si on
n'arrive pas à la lire (jamais censé arriver).
À partir d'un OS live (ex. « FreeBSD 15.0-RELEASE-p10 ») et des dernières RELEASE par branche, renvoie un flag d'upgrade (« ↑ 15.1-RELEASE dispo » et/ou « branche 16.x dispo ») ou nil si à jour / version illisible. Pur.
Map paquet→version pour un host (live SSH). rquery: true interroge le
dépôt (versions DISPONIBLES) au lieu de l'installé. Tente les users comme
gather_usage. {nil, nil} si injoignable. csh-safe (pas de redir Bourne).
Répertoire de sortie : <config>/<société>/info (périmètre société) ou
<config>/<société>/<domaine>/info (périmètre domaine ou host). Régénéré
à chaque lancement (comme la gem coverage).
Clé de tri d'une IPv4 (data-sort) : un nombre, octet par octet
(192.168.42.4 → 192168042004) ; sans adresse, -1 (en tête). Pur.
Clé de tri d'une IPv6 (data-sort) : la forme COMPLÈTE, 8 groupes de 4
chiffres hexadécimaux, comparée comme du texte (2001:41d0:364:4100::1 →
2001:41d0:0364:4100:0000:0000:0000:0001) ; sans adresse, chaîne vide. Pur.
Lignes du bloc ovh: (service_name + gamme + datacentre + rack + IPs + prix/mois).
Extrait (trié, dédupliqué) les paquets des steps pkg-install de tous les
*.recipe.yml des dossiers donnés. Pur (filesystem) → testable.
Parse df -h → utilisation par POOL : un dataset ZFS (zroot/..., zdata)
est regroupé sous son pool (segment avant le 1er /), en gardant le montage
le plus court (racine du pool) ; un device classique (UFS/ext4) = son montage.
Pseudo-FS (devfs/tmpfs/proc…) filtrés. Fonction PURE (sans sudo côté hôte).
Parse une sortie pkg query/rquery '%n %v' (une ligne « nom version »
par paquet) en map nom→version. Pur → testable.
Parse zfs list -Hp -d 0 -o name,used,avail (racine de chaque pool, en
octets) → une ligne par pool. Libre = AVAIL de ZFS, comme df -h : ce
qu'on peut encore écrire, réserve de sécurité (1/32 du pool), parité
RAIDZ et réservations déduites. (FREE de zpool list les compte encore :
zora, 27 oct. 2026, 50,8 Go « libres » pour 21,5 Go écrivables.) Taille =
utilisé + libre, comme df. Colonne % = le LIBRE.
Paquets « gérés » = union des packages: des steps pkg-install de TOUTES
les recettes du chemin de recherche des hosts du périmètre (générique +
privé société). C'est la liste « logiciels nécessaires aux applications »,
fournie par la mise en œuvre des recettes (pas une liste à maintenir à part).
--refresh [périmètre] : pour chaque host OVH du périmètre (société,
domaine, host, ou tous), récupère gamme + specs via l'API OVH et les
écrit dans le host.yml. AUCUN SSH, aucune modif serveur. Le périmètre
filtre par société / domaine / fqdn / nom court.
Hosts résolus du périmètre (société / domaine / fqdn / nom court ; vide = tous).
Public : réutilisé par beryl update/upgrade pour cibler une portée.
Convertit une taille humaine (14T, 460G, 512K, 8.0G) en octets,
pour un tri numérique correct des colonnes (data-sort). 0 si illisible.
Ordre des volumes : zroot TOUJOURS en premier, puis les autres pools par
ordre alphabétique (zdata, ztank…).
Remplace le bloc top-level key: (sa ligne + les lignes indentées qui
suivent) par block, en PRÉSERVANT tout le reste (commentaires inclus).
Si le bloc est absent, l'ajoute en fin de fichier (ligne vide de séparation).
Tentatives de connexion {user, cible} ordonnées :
--system-ssh: on IMITEssh <fqdn>— on vise le FQDN et on laisse VOTRE~/.ssh/configrésoudre user/hostname/proxyjump. usernil= login par défaut (1ʳᵉ tentative), puisdeployen repli (hosts beryl).- clé beryl : on vise l'hôte SSH réel (service name / IP vRack) en
connect_user(admin…) puisdeploy.