feat(os): profils Proxmox/RPi + machine_probe + proxy persistent (tâche 2 SJ-7)
- templates proxmox/ (update-analyze: dépôts PVE ; full-upgrade) et raspbian/ (update-analyze: espace disque ; full-upgrade) - execute résout les actions APT par profil OS (resolveTemplate) → proxmox/ raspbian si dispo, sinon fallback apt/ (non-régression debian/ubuntu vérifiée) - machine_probe (lecture seule) : template + parseProbe/proposeCorrections (TDD) → propose os_family/machine_kind/virtualization, persiste machine_hardware, n'applique jamais auto ; branche execute + allowlist route - apt_proxy_persistent : ActionType + template idempotent (/etc/apt/apt.conf.d/ 01proxy, backup) + TemplateVars.aptProxyUrl + allowlist route tsc 0 · 95 tests · build OK · résolution OS vérifiée. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
# Tâche 2 — SJ-7 : Profils OS Proxmox/RPi + machine_probe + proxy persistent
|
||||
|
||||
> Statut : **implémenté** (2026-06-06). tsc 0 · 95 tests · build OK. Résolution OS vérifiée.
|
||||
> Réf. design : `docs/design/tache2/60-profils-os-machine.md`, `80-sous-jalons.md` SJ-7.
|
||||
|
||||
## Périmètre livré (additif, fallback base préservé)
|
||||
|
||||
- **Templates OS-spécifiques** :
|
||||
- `templates/proxmox/update-analyze.sh.tpl` (détection dépôts PVE enterprise/no-subscription)
|
||||
+ `full-upgrade.sh.tpl` (dist-upgrade kernel/proxmox-ve/Ceph).
|
||||
- `templates/raspbian/update-analyze.sh.tpl` (contrôle espace disque carte SD)
|
||||
+ `full-upgrade.sh.tpl` (`apt full-upgrade`). `rpi-update` volontairement non utilisé.
|
||||
- **Résolution par profil OS dans `execute.ts`** : les actions APT passent par
|
||||
`resolveTemplate(file, osFamily)` → `proxmox/`/`raspbian/` si dispo, sinon `apt/`.
|
||||
Vérifié : proxmox/raspbian pris ; debian/ubuntu → fallback `apt/` (non-régression jalon 1).
|
||||
`refresh.ts` résolvait déjà `update-analyze`.
|
||||
- **`machine_probe`** (action lecture seule) :
|
||||
- `templates/apt/machine-probe.sh.tpl` (os-release, arch, systemd-detect-virt, /etc/pve,
|
||||
/proc/cpuinfo RPi, lspci GPU, ip addr).
|
||||
- `machineProbe.ts` : `parseProbe` + `proposeCorrections` (TDD, 4 cas : Proxmox/RPi/VM KVM)
|
||||
→ propose `os_family`/`machine_kind`/`virtualization`. `runProbe` persiste les faits
|
||||
matériels (`machine_hardware` gpus/network) et renvoie un diff **jamais appliqué auto**.
|
||||
- Branche `execute` (archiveExecution) + allowlist route.
|
||||
- **Proxy APT persistant** (`apt_proxy_persistent`) :
|
||||
- ActionType ajouté ; `templates/apt/apt-proxy-persistent.sh.tpl` écrit
|
||||
`/etc/apt/apt.conf.d/01proxy` (idempotent, sauvegarde horodatée de l'existant).
|
||||
- `TemplateVars.aptProxyUrl` ; rendu avec `m.aptProxyUrl` ; allowlist route.
|
||||
|
||||
## Sécurité / invariants
|
||||
|
||||
- `machine_probe` ne modifie rien ; les corrections OS/kind sont **proposées**, l'opérateur
|
||||
garde le dernier mot (pas d'application auto).
|
||||
- Proxy persistant = action explicite idempotente avec backup ; l'URL n'est pas un secret.
|
||||
- Aucun secret dans les templates ; fallback `base` garantit la non-régression Debian/Ubuntu.
|
||||
|
||||
## Reste tâche 2
|
||||
|
||||
SJ-8 / SJ-9 (post-install : bootstrap/identité, paquets de base/Docker officiel/partages/VM tools).
|
||||
UI : bouton « Sonder » + affichage des propositions, sélecteur de proxy persistant = tâche 3.
|
||||
Reference in New Issue
Block a user