Fare il cloud da zero: cloudStorm

A Gioorgi.com ci siamo già occupati di argomenti prettamente sistemistici come la virtualizzazione di ambienti Unix. Visto il successo del Cloud Computing, abbiamo pensato di tornare sull’argomento.

In questo articolo mostrerò come creare insieme di macchine configurate in modo omogeno, con il minor effort sistemistico possibile. Si tratta di un primo esercizio molto semplice.

Seguiteci…

Prima di iniziare dobbiamo scegliere se affidarci a sistemi ipertrofici (come eucalyptus o altri sistemi cloud) oppure partire dal buon vecchio Linux. La seconda strada è la meno scontata ma anche quella che evita di “tirarsi in barca” tecnologie superflue.

Il nostro obiettivo è fare uno script di shell che sia in grado di configurare una linux box in modo che

  1. Sia possibile accedere a tale linux box con SSH servendosi della propria chiave di criptazione id_rsa.pub
  2. Sia installato un sistema ubuntu minimale (iso CD da 112 MB, VM finale da meno di 2GB)
  3. Sia contestualmente installato almeno python+virtualenv+ un ambiente python isolato con alcuni package di esempio
  4. Lo script di shell sia meno di 50 linee :)

Scelta della Macchina Virtuale

Come ambiente virtualizzato abbiamo scelto VMware Fusion su un MacBook Pro da 4GB di RAM. Come macchina virtuale Linux abbiamo selezionato un sistema minimale (112MB) precostituito da Turnkey Linux. Dopo aver scaricato la iso dell’ambiente, lo abbiamo installato su una macchina virtuale con appena 348MB.

Abbiamo quindi scritto lo script “bootStrap.sh” che si preoccupa di creare il nostro ambinete, che chiameremo CloudStorm.

La prima versione di bootStrap.sh potete scaricarla qui [download id=”7″].

Per prima cosa bootStrap.sh copia la chiave privata della vostra shell SSH. Se non avete tale chiave, guardate il manuale di ssh-keygen per farvene un’idea.

Poi lo script si serve di apt-get per installare al minimo python 2.5, sqlite ed easy_install.

A questo punto la mano viene passata a “easy_install”, il software per gestire le dipendenze in python (equivalente del CPAN del perl).

Da Apt-Get a Easy_Install: Pytonizziamoci!

Con easy_install viene scaricato un solo package: virtualenv.

VirtualEnv consente di creare ambienti python isolati, in modo da garantire un buon livello di compatibilità.
A titolo di esempio lo script crea un ambiente virutalizzato cloudStorm e installa alcuni package direttamente da Internet.

Conclusioni

E’ importante notare come il nostro script dipenda da un numero ridotto di comandi unix, ma che ovviamente cambiando distribuzione potreste dover effettuare qualche piccola manutenzione (per es se vi doveste trovare ad usare rpm o yum al posto di apt)

Dopo alcune prove ulteriori, risulta che la distribuzine base di Debian Linux, da cui deriva Ubuntu, ed in particolare la  network install, produce installazioni più contenute della TurnKey-Linux.

Risorse

  • OpenStack, appena reso open source
  • Eucalyptus, ma la sua doppia anima è un po’ troppo commercializzata.