OpenNebula è un sistema per gestire un cloud, quindi permette di gestire con facilità tutte le risorse allocabili in un cloud e cioè:
- immagini di dischi
- indirizzi ip
- istanze di macchine virtuali
Oltre all’accesso tramite API, è possibile utilizzare l’interfaccia a riga di comando oppure una interfaccia web 2.0 chiamata sunstone.
In questo articolo e nei prossimi due useremo un approccio comune a chi come me arriva dalla semplice virtualizzazione, rimandando ad un futuro articolo un approccio più “da cloud”: in pratica in questo articolo creeremo una immagine disco specifica per ogni VM che andremo a creare. Nel prossimo articolo creeremo una risorsa Network e, in quello successivo, l’istanza alla VM vera e propria.
Sia ben chiaro che questo approccio è limitante rispetto alle reali potenzialità del sistema, però ci permette di migrare fin da subito le nostre VM sparse nei più disparati sistemi di virtualizzazione, all’interno del nostro nuovo cloud realizzato con OpenNebula.
Immagini dischi
Un cloud è nulla senza le VM.
OpenNebula ha un servizio interno, l’Image Server, in grado di gestire tre tipi diversi di immagini:
- OS: immagine base di un sistema operativo
- Datablock: immagine contente i dati utente
- CD-ROM: immagine .iso di un CD-ROM
Per quanto riguarda le immagini CD-ROM, il nome dice tutto. Al contrario bisogna capire la differenza che intercorre tra gli altri due tipi di immagine: le immagini OS sono immagini statiche che vengono “duplicate” all’avvio di ogni istanza di VM e che normalmente perdono ogni modifica allo spegnimento del server; al contrario le immagini Datablock sono immagini che non vengono cancellate allo spegnimento della VM, pertanto sono adatte a mantenere i dati.
L’approccio “Cloud”, quindi, consiste nel crare una sorta di “Ramdisk” con il sistema operativo e i pacchetti e casomai di aggiungere dei datablock contenti i dati. Per esempio, un comune webserver avrà il disco OS con tutti i pacchetti funzionanti e un datablock montato su /var/www con i file delle pagine del sito web.
L’approccio “Base” che invece noi adotteremo è quello di avere una immagine “persistent” che contiene tutto e che non viene clonata e, quindi, conserva al suo interno le modifiche che andremo a realizzare.
Creato il file con l’immagine adatta all’hypervisor del nostro Cloud (nel nostro esempio è /home/cloud/images/ubuntu-desktop/disk.0), dobbiamo caricarlo all’interno dell’image server. Per far ciò andremo primn a creare un file “template” con le caratteristiche dell’immagine:
vm1.disk NAME = "centos" PATH = /srv/vms/test.img PUBLIC = NO PERSISTENT = YES
e poi a caricare il file con:
oneimage register vm1.disk
Per avere una lista completa delle possibilità offerte dall’image server vi rimado alla pagina ufficiale della documentazione.
Analogamente è possibile eseguire la medesima operazione attraverso sunstone andando in Image -> New:
A questo punto la nostra immagine è pronta per essere utilizzata.
