# B2 — Closeout Passo B2 di `plans/PhaseB-user-checklist.md`: trasferimento template VM da `F:\CI\Templates\` a `/var/lib/ci/templates/` con integrità snapshot. ## Stato ✅ **COMPLETATO** — 3 template trasferiti, snapshot validati, smoke test PASS. ## Cosa è stato fatto - [x] Verificato assenza di `*.vmem`/`*.vmsn` di runtime sui template Windows prima della copia (VM spente). - [x] Trasferimento via `rsync` SSH da Windows → Linux per tutti e 3 i template: - `WinBuild2025` (snapshot `BaseClean`) - `WinBuild2022` (snapshot `BaseClean`) - `LinuxBuild2404` (snapshot `BaseClean-Linux`) - [x] Snapshot validati con `vmrun -T ws listSnapshots` su ciascun `.vmx`. - [x] Ogni `.vmx` aperto in Workstation Linux GUI; risposto "**I copied it**" al prompt di registrazione. - [x] Keyring file-based configurato anticipatamente per `ci-runner` (prerequisito del smoke test Windows; il setup completo è in B3): - `keyrings.alt.file.PlaintextKeyring` scelto al posto di `secret-tool` (vedi Deviazioni). - Credenziale `BuildVMGuest` salvata con `tools/ci-cred-set.py`. - [x] Smoke test `vm new` + `wait-ready` + `vm remove` PASS su: - `WinBuild2025` (WinRM HTTPS/5986) - `LinuxBuild2404` (SSH/22) ## Deviazioni / gotcha - **`secret-tool` scartato**: il piano originale usava `secret-tool` (GNOME Secret Service) per le credenziali headless. Non funziona senza una D-Bus session attiva, che non è disponibile quando il processo gira come servizio systemd (`act-runner.service`). Soluzione adottata: `keyrings.alt` con `PlaintextKeyring` (file `~/.local/share/python_keyring/keyring_pass.cfg`), che non dipende da D-Bus e funziona correttamente in contesto headless. Questa scelta è documentata in B3-closeout.md. - **AGENTS.md errore #9 (machine-id)**: lo snapshot `BaseClean-Linux` era già stato preso con `machine-id` troncato — nessuna collisione DHCP rilevata durante lo smoke test. ## Riferimenti commit - `3921758` — feat: add credential management scripts (`tools/ci-cred-set.py`, `tools/ci-cred-check.py`)