Portál AbcLinuxu, 2. května 2025 07:19
Jedna z věcí, která mě irituje u libvirtu je VNC konzole. Nepracuje dobře s mapováním kláves - alespoň tedy na mém notebooku. Proto u svého řešení používám pro přístup na grafickou konzoli virtuálu prakticky výhradně přístup přes Spice, kde tento problém není.
U spice klienta je třeba pro přístup k virtuálu znát hostitele, číslo portu na kterém číhá spice a v mém případě heslo. To není nijak složité - přístup na grafickou konzoli ještě neznamená automaticky přihlášení do stroje. Ale je specifické pro každý virtuál a v hlavě ho nenosím.
Nelezu na grafickou konzoli často, takže jsem si dlouhou dobu vystačil s tím, že jsem nejprve přes crm status zjistil, kde mi virtuál aktuálně běží a z konfigurace si vytáhnul číslo portu a heslo. Ovšem s tím jak jsem přešel na živou migraci mne to přestalo uspokojovat. Udělal jsem si tedy jednoduchý wrapper:
nod1:~# cat /usr/bin/spice #!/bin/bash HOST=($(crm_resource -r $1 --locate)) [ -z "${HOST[5]}" ] && exit 1 HOSTIP=$(ping -c1 -4 ${HOST[5]}.${DOMAIN} | grep ^PING | awk '{print $3}' | sed 's/[()]//g') SPICE=($(crm_resource -r $1 -g spice | sed 's/,password=/\ /')) echo "-h ${HOSTIP} -p ${SPICE[0]#*=} -w ${SPICE[1]}"
Jeho použití je triviální. Skript nedělá nic jiného, než že zjistí kde stroj aktuálně běží a z informací, které má k dispozici v konfiguraci virtuálu v Pacemakeru (viz ukázkový příklad v minulém blogpostu) sestaví parametry pro příkazovou řádku spice klienta.
Skript je přes Ansible distribuován přes všechny nody, takže je úplně jedno přes který z nich ho zavolám:
user@stroj:~$ spicec $(ssh root@<libovolný nod> spice <zdroj virtuálu>)
Výsledkem je otevřená grafická konzole virtuálního stroje, a mne tak nemusí trápit kde zrovna běží. Formát, v jakém se parametry vrací může použít jak konzolový klient spicec, tak spicy, který jinak používá gui.
Otevřená spice konzole funguje také jako indikátor úspěšně dokončené migrace. Ve chvíli, kdy dojde k dokončení migrace "umře" takže vím, že od onoho momentu stroj žije v rámci jiného nodu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.