******************************************************************** Macchine virtuali con libvirt+qemu/kvm per fuss-server e fuss-client ******************************************************************** Per fare test di fuss-server e fuss-client è utile avere a disposizione delle macchine virtuali; specialmente se si lavora su debian stretch o successive (dove VirtualBox non è più disponibile) è comodo usare qemu/kvm tramite libvirt. Installazione e configurazione ============================== Installazione di libvirt ------------------------ * Installare i seguenti pacchetti:: apt install qemu libvirt-clients libvirt-daemon virtinst \ libvirt-daemon-system virt-viewer virt-manager dnsmasq-base * Aggiungere il proprio utente ai gruppi ``libvirt`` e ``kvm``:: adduser $UTENTE libvirt adduser $UTENTE kvm Una volta che l'utente fa parte dei gruppi (ad esempio previo logout/ri-login) si può usare ``virt-manager`` per gestire macchine virtuali e reti tramite un'interfaccia grafica simile a quella di VirtualBox. Volendo invece usare la riga di comando, si può proseguire con questa guida. Configurazione della rete ------------------------- fuss-server richiede la configurazione di almeno due, in alcuni casi tre, schede di rete: una con accesso ad internet e due su rete isolata. Per creare queste interfacce di rete da riga di comando se ne deve scrivere il file di configurazione e passarlo al comando ``virsh net-define`` Per la rete nattata, creare il file ``natted.xml`` con i seguenti contenuti, sostituendo a ``8.8.8.8`` l'indirizzo di un server dns opportuno:: natted .. tip:: Con questa configurazione sull'host verrà configurata un'interfaccia di rete ``virbr7`` con assegnato l'indirizzo ``192.168.7.1``. Le macchine virtuali avranno invece a disposizione un dchp che assegnerà loro indirizzi nel range da ``192.168.7.128`` a ``192.168.7.254``, e le richieste DNS verranno inoltrate al server ``8.8.8.8.``. quindi lanciare, come root:: # virsh net-define natted.xml # virsh net-start natted Similmente, per le interfacce isolate si può usare quanto segue, nel file ``isolated.xml``:: isolated e nel file ``isolated2.xml``:: isolated2 E come prima, sempre con utente root:: # virsh net-define isolated.xml # virsh net-start isolated # virsh net-define isolated2.xml # virsh net-start isolated2 In questo modo le interfacce sono definite, ma non verranno avviate automaticamente; per farlo usare i seguenti comandi:: # virsh net-autostart natted # virsh net-autostart isolated # virsh net-autostart isolated2 oppure usare ``net-start`` per ciascuna interfaccia quando se ne ha bisogno. Creazione delle macchine virtuali --------------------------------- Per creare la macchina che ospiterà il server, dopo aver abilitato le interfacce di rete e scaricato l'`iso di fuss-server `_ lanciare il seguente comando:: $ virt-install --connect qemu:///system --name fuss_server --memory 1024 \ --cdrom $PATH_ISO_FUSS-SERVER --network network=natted \ --network network=isolated --network network=isolated2 \ --disk size=16,format=qcow2 --os-variant debian8 questo creerà una macchina virtuale che fa il boot dall'iso dell'installer e aprirà una finestra di virt-viewer per controllarla. Alla fine dell'installazione si può fare login e procedere con l'`Installazione di Fuss Server `_ Una volta che il server è installato e configurato si può fare la stessa cosa per una (o più) macchine client:: $ virt-install --connect qemu:///system --name fuss_client --memory 1024 \ --cdrom $PATH_ISO_FUSS-CLIENT --network network=isolated \ --disk size=24,format=qcow2 --os-variant debian9 Gestione ======== Boot delle macchine ------------------- Per avviare le volte successive le macchine è necessario: * Se l'host è stato spento, e non è stato configurato l'autoavvio delle interfacce di rete, abilitarle:: # virsh net-start natted # virsh net-start isolated # virsh net-start isolated2 * Avviare la macchina di cui si ha bisogno:: $ virsh --connect qemu:///system start fuss-server * Se necessario, avviare una sessione grafica sulla macchina:: $ virt-viewer --connect qemu:///system fuss-server Snapshot -------- Per creare uno snapshot di una macchina:: virsh -c qemu:///system snapshot-create-as fuss-server "" Per vedere l'elenco degli snapshot disponibili:: virsh -c qemu:///system snapshot-list fuss-server Per riportare la macchina ad uno snapshot, eliminando tutte le modifiche effettuate nel frattempo:: virsh -c qemu:///system snapshot-revert fuss-server oppure, per usare lo snapshot corrente (sempre perdendo le modifiche):: virsh -c qemu:///system snapshot-revert fuss-server --current Configurazioni del sistema ========================== Configurazione della rete ------------------------- All'interno del fuss-server, le interfacce di rete come definite in questa pagina possono essere configurate aggiungendo a ``/etc/network/interfaces`` le seguenti righe:: allow-hotplug enp1s0 iface enp1s0 inet dhcp allow-hotplug enp2s0 iface enp2s0 inet static address 192.168.6.1 netmask 255.255.255.0 In fuss-client non è invece necessaria nessuna configurazione, dato che viene usato dhcp come da default. Vedi anche ========== In caso di problemi o per approfondire l'uso da riga di comando di libvirt è molto utile la `pagina su Libvirt della wiki di Arch Linux `_ , la maggior parte della quale si applica anche a sistemi Debian o Debian-based.