********************************************************************
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.