Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
tesi di laurea triennale 
relatore 
Ch.mo prof. Stefano Avallone 
correlatore 
Dott. Francesco Collovà 
candidato 
Sonia Luciana Pepe 
Matr. 534/2933 
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud 
Anno Accademico 2013/2014
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Contesto e contributo 
OBIETTIVO: Semplificare e velocizzare il lavoro di tutte quelle aziende che intendono affacciarsi al mondo del Cloud Computing attraverso l’adozione di un servizio di storage. 
Moderne infrastrutture IT: 
•Altamente distribuite 
•Hardware virtuale e fisico 
•Applicazioni e servizi cloud-based 
Complessità = difficoltà di gestione 
SOFTWARE ANALIZZATI 
OwnCloud (Cloud Storage) 
Vagrant (Virtualization Management) 
Ansible (IT Automation and Configuration Management) 
PROGETTO: Implementazione di un kit per il deployment automatico del sistema applicativo OwnCloud su un numero arbitrario di server virtuali.
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Insieme di tecnologie che consentono, tipicamente sotto forma di un servizio offerto da un provider, di accedere ad un pool condiviso di risorse distribuite e virtualizzate in rete in un’architettura di tipo client-server. 
Cloud Computing 
Fruizione del servizio in base alle effettive necessità, in modo unilaterale e automatico. Minima interazione con il provider. 
Le risorse sono raggruppate per servire più consumatori, utilizzando il modello multi- tenant. 
Le risorse, disponibili in rete, sono accessibili attraverso meccanismi standard utilizzando piattaforme eterogenee, purché consentano l’accesso ad Internet. 
Le risorse possono essere acquisite in maniera rapida ed elastica, in alcuni casi anche automatica. 
I sistemi cloud possono monitorare ed ottimizzare l’utilizzo delle risorse, fornendo il livello di astrazione appropriato al tipo di servizio fruito. 
MODELLI DI SERVIZIO 
MODELLI DI DISTRIBUZIONE 
CARATTERISTICHE
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Cloud Storage 
Modello per la conservazione dei dati in remoto 
Manutenzione e gestione a carico del provider 
Scalabilità 
Spazio potenzialmente illimitato 
Pay-per-use 
Internet Access 
Application Cloud 
Computer Cloud 
Network Storage Cloud
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
OwnCloud 
Gestione e protezione dei dati all’interno dell’ambiente OwnCloud 
Integrazione di sistemi e politiche esistenti 
Estensione delle funzionalità attraverso un set completo di API 
Interfaccia web semplice e intuitiva 
Esperienza professionale su desktop, laptop, tablet e smarthphone 
Distribuzioni supportate: Linux, Mac, Windows, Android 
Soluzione open source per la sincronizzazione e la condivisione di file e contenuti 
Caratteristiche 
OwnCloud Server 
Applicazione PHP in esecuzione su web server IIS o Apache 
Database – SQLite, MySQL, PostgreSQL, Oracle database 
Astrazione del livello di storage
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
IT Automation and Configuration Management 
Per aumentare l’efficienza e realizzare a pieno i benefici della virtualizzazione e del Cloud Computing, le organizzazioni IT hanno bisogno di strumenti di automazione finalizzati a migliorare l’amministrazione, il funzionamento e la gestione della loro infrastruttura, sia essa fisica, virtuale o cloud-based. 
Ansible nasce dalla necessità di avere uno strumento semplice e intuitivo per orchestrare attività IT più o meno complesse, dal provisioning al deployment di applicazioni.
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Ansible Architecture 
Modules library 
Ansible dispone di moduli integrati per automatizzare le operazioni più comuni, ma è anche possibile creare moduli personalizzati utilizzando qualsiasi linguaggio (unico vincolo = output JSON) 
Playbooks 
Documenti YAML semplici e intuitivi. 
Particolarmente adatti al deployment multi-machine 
Trasporto SSH 
Ansible comunica in parallelo con le macchine gestite attraverso il trasporto SSH 
Node1 
Node2 
NodeN 
Nessun software deve essere installato sulle macchine gestite. 
Agentless 
Per iniziare ad utilizzare Ansible, tutto ciò che è necessario è un computer con installato Python
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Ansible Playbook 
Sintassi inizio file: serve ad interpretare il file come un documento YAML corretto 
Host o gruppo di host definito nell’ Inventory File, sul quale saranno eseguiti i task. 
Task: insieme di istruzioni per la definizione e/o la configurazione degli hosts. 
Handlers: azioni eseguite solo quando si verificano cambiamenti nel sistema. 
Moduli: eseguibili direttamente su host remoti oppure tramite i playbook. Idempotenti.
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Il termine virtualizzazione si riferisce alla possibilità di astrarre le componenti hardware degli elaboratori al fine di renderle disponibili al software sotto forma di risorsa virtuale. 
Una macchina virtuale è l’implementazione software completa di un computer con disco, memoria e CPU virtuali, realizzabile eseguendo un sistema operativo su un software di virtualizzazione, comunemente indicato con il termine “hypervisor”. 
Virtualizzazione 
Tipicamente ad ogni server è dedicata una singola applicazione, in modo che eventuali guasti non blocchino tutto il lavoro. 
Physical 
Virtual 
Molteplici macchine virtuali, che fungono da server separati ma che condividono le risorse hardware. 
• RIDUZIONE DEI COSTI 
• SISTEMI ALTAMENTE SCALABILI E CONFIGURABILI 
• FACILITÀ DI GESTIONE 
NUMERO ELEVATO DI SERVER = 
COSTI ELEVATI
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Virtualization Management 
Lo sviluppatore interagisce con Vagrant eseguendo semplici comandi. Il comando principale è vagrant up per l’avvio della virtual machine. 
Il Vagrantfile (file di configurazione) contiene le direttive di base per specificare le caratteristiche della VM da costruire. 
Vagrant comunica a VirtualBox, l’hypervisor di default, le istruzioni per creare la VM. 
Per il provisioning della VM, Vagrant può utilizzare numerosi strumenti, tra cui Ansible, Puppet, Chef e script di shell, che si occuperanno di installare tutto il software necessario per eseguire l’applicazione del progetto. 
Una volta creata, avviata e preparata, lo sviluppatore può accedere direttamente alla VM (ad esempio, via SSH) esattamente nello stesso modo in cui accederebbe a qualsiasi server remoto. La differenza è che in questo caso il server vive in una VM all’interno della macchina host.
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica Progetto 
Per automatizzare il deployment del servizio di cloud storage OwnCloud, si è predisposto un kit che consente di installare OwnCloud Server su un nodo virtuale, semplicemente lanciando un file eseguibile. 
Le variabili utilizzate nei playbook sono definite nei file contenuti in questa directory 
Contiene il Vagrantfile necessario per la creazione della VM ed è la directory condivisa tra host e guest 
Ansible Playbooks: 
eseguono il deployment di OwnCloud Server e la configurazione del database MySQL 
Contiene le istruzioni per l’utilizzo del kit 
Ansible Configuration File 
Hosts Inventory File: 
contiene l’elenco dei nodi che Ansible deve gestire 
File eseguibile che avvia tutta l’installazione 
Documento YAML che include i playbook da eseguire 
File eseguibile che lancia il comando vagrant up per l’avvio della VM 
Private key file: necessario per l’autenticazione dell’utente SSH
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Funzionamento 
./install-owncloud 
1 
2 
./start-node 
ansible-playbook 
owncloud.yaml 
pre.yaml 
own.yaml 
mysql.yaml 
include 
VAGRANT UP 
prerequisiti 
OwnCloud 
Server 
Configurazione del database MySQL
Automatic Cloud Deployment: 
un caso di studio basato sul software OwnCloud 
Scuola Politecnica e delle Scienze di Base 
Corso di Laurea in Ingegneria Informatica 
Conclusioni 
Il lavoro svolto ha dato modo di sperimentare: 
la funzionalità di autoconfigurazione fornita dal sistema applicativo OwnCloud e i numerosi vantaggi offerti dalla fruizione di tale servizio; 
le possibili funzionalità derivanti dall’integrazione tra Ansible e Vagrant; 
la semplicità di scrittura e l’efficacia dei Playbooks nell’esecuzione di operazioni più o meno complesse; 
i vantaggi derivanti dall’utilizzo dello strumento Vagrant nella costruzione e nella gestione delle virtual machines. 
Sviluppi futuri 
Integrare al progetto nuovi Playbooks per la configurazione di altri DBMS, oltre a quello già fornito per MySQL. 
Sfruttare Ansible anche per il provisioning della virtual machine, oltre che per il deployment delle applicazioni. 
Sperimentare l’utilizzo dei plugin di Vagrant, integrando OpenStack nel Vagrantfile come provider alternativo a VirtualBox.

Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud

  • 1.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica tesi di laurea triennale relatore Ch.mo prof. Stefano Avallone correlatore Dott. Francesco Collovà candidato Sonia Luciana Pepe Matr. 534/2933 Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Anno Accademico 2013/2014
  • 2.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Contesto e contributo OBIETTIVO: Semplificare e velocizzare il lavoro di tutte quelle aziende che intendono affacciarsi al mondo del Cloud Computing attraverso l’adozione di un servizio di storage. Moderne infrastrutture IT: •Altamente distribuite •Hardware virtuale e fisico •Applicazioni e servizi cloud-based Complessità = difficoltà di gestione SOFTWARE ANALIZZATI OwnCloud (Cloud Storage) Vagrant (Virtualization Management) Ansible (IT Automation and Configuration Management) PROGETTO: Implementazione di un kit per il deployment automatico del sistema applicativo OwnCloud su un numero arbitrario di server virtuali.
  • 3.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Insieme di tecnologie che consentono, tipicamente sotto forma di un servizio offerto da un provider, di accedere ad un pool condiviso di risorse distribuite e virtualizzate in rete in un’architettura di tipo client-server. Cloud Computing Fruizione del servizio in base alle effettive necessità, in modo unilaterale e automatico. Minima interazione con il provider. Le risorse sono raggruppate per servire più consumatori, utilizzando il modello multi- tenant. Le risorse, disponibili in rete, sono accessibili attraverso meccanismi standard utilizzando piattaforme eterogenee, purché consentano l’accesso ad Internet. Le risorse possono essere acquisite in maniera rapida ed elastica, in alcuni casi anche automatica. I sistemi cloud possono monitorare ed ottimizzare l’utilizzo delle risorse, fornendo il livello di astrazione appropriato al tipo di servizio fruito. MODELLI DI SERVIZIO MODELLI DI DISTRIBUZIONE CARATTERISTICHE
  • 4.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Cloud Storage Modello per la conservazione dei dati in remoto Manutenzione e gestione a carico del provider Scalabilità Spazio potenzialmente illimitato Pay-per-use Internet Access Application Cloud Computer Cloud Network Storage Cloud
  • 5.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica OwnCloud Gestione e protezione dei dati all’interno dell’ambiente OwnCloud Integrazione di sistemi e politiche esistenti Estensione delle funzionalità attraverso un set completo di API Interfaccia web semplice e intuitiva Esperienza professionale su desktop, laptop, tablet e smarthphone Distribuzioni supportate: Linux, Mac, Windows, Android Soluzione open source per la sincronizzazione e la condivisione di file e contenuti Caratteristiche OwnCloud Server Applicazione PHP in esecuzione su web server IIS o Apache Database – SQLite, MySQL, PostgreSQL, Oracle database Astrazione del livello di storage
  • 6.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica IT Automation and Configuration Management Per aumentare l’efficienza e realizzare a pieno i benefici della virtualizzazione e del Cloud Computing, le organizzazioni IT hanno bisogno di strumenti di automazione finalizzati a migliorare l’amministrazione, il funzionamento e la gestione della loro infrastruttura, sia essa fisica, virtuale o cloud-based. Ansible nasce dalla necessità di avere uno strumento semplice e intuitivo per orchestrare attività IT più o meno complesse, dal provisioning al deployment di applicazioni.
  • 7.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Ansible Architecture Modules library Ansible dispone di moduli integrati per automatizzare le operazioni più comuni, ma è anche possibile creare moduli personalizzati utilizzando qualsiasi linguaggio (unico vincolo = output JSON) Playbooks Documenti YAML semplici e intuitivi. Particolarmente adatti al deployment multi-machine Trasporto SSH Ansible comunica in parallelo con le macchine gestite attraverso il trasporto SSH Node1 Node2 NodeN Nessun software deve essere installato sulle macchine gestite. Agentless Per iniziare ad utilizzare Ansible, tutto ciò che è necessario è un computer con installato Python
  • 8.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Ansible Playbook Sintassi inizio file: serve ad interpretare il file come un documento YAML corretto Host o gruppo di host definito nell’ Inventory File, sul quale saranno eseguiti i task. Task: insieme di istruzioni per la definizione e/o la configurazione degli hosts. Handlers: azioni eseguite solo quando si verificano cambiamenti nel sistema. Moduli: eseguibili direttamente su host remoti oppure tramite i playbook. Idempotenti.
  • 9.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Il termine virtualizzazione si riferisce alla possibilità di astrarre le componenti hardware degli elaboratori al fine di renderle disponibili al software sotto forma di risorsa virtuale. Una macchina virtuale è l’implementazione software completa di un computer con disco, memoria e CPU virtuali, realizzabile eseguendo un sistema operativo su un software di virtualizzazione, comunemente indicato con il termine “hypervisor”. Virtualizzazione Tipicamente ad ogni server è dedicata una singola applicazione, in modo che eventuali guasti non blocchino tutto il lavoro. Physical Virtual Molteplici macchine virtuali, che fungono da server separati ma che condividono le risorse hardware. • RIDUZIONE DEI COSTI • SISTEMI ALTAMENTE SCALABILI E CONFIGURABILI • FACILITÀ DI GESTIONE NUMERO ELEVATO DI SERVER = COSTI ELEVATI
  • 10.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Virtualization Management Lo sviluppatore interagisce con Vagrant eseguendo semplici comandi. Il comando principale è vagrant up per l’avvio della virtual machine. Il Vagrantfile (file di configurazione) contiene le direttive di base per specificare le caratteristiche della VM da costruire. Vagrant comunica a VirtualBox, l’hypervisor di default, le istruzioni per creare la VM. Per il provisioning della VM, Vagrant può utilizzare numerosi strumenti, tra cui Ansible, Puppet, Chef e script di shell, che si occuperanno di installare tutto il software necessario per eseguire l’applicazione del progetto. Una volta creata, avviata e preparata, lo sviluppatore può accedere direttamente alla VM (ad esempio, via SSH) esattamente nello stesso modo in cui accederebbe a qualsiasi server remoto. La differenza è che in questo caso il server vive in una VM all’interno della macchina host.
  • 11.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Progetto Per automatizzare il deployment del servizio di cloud storage OwnCloud, si è predisposto un kit che consente di installare OwnCloud Server su un nodo virtuale, semplicemente lanciando un file eseguibile. Le variabili utilizzate nei playbook sono definite nei file contenuti in questa directory Contiene il Vagrantfile necessario per la creazione della VM ed è la directory condivisa tra host e guest Ansible Playbooks: eseguono il deployment di OwnCloud Server e la configurazione del database MySQL Contiene le istruzioni per l’utilizzo del kit Ansible Configuration File Hosts Inventory File: contiene l’elenco dei nodi che Ansible deve gestire File eseguibile che avvia tutta l’installazione Documento YAML che include i playbook da eseguire File eseguibile che lancia il comando vagrant up per l’avvio della VM Private key file: necessario per l’autenticazione dell’utente SSH
  • 12.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Funzionamento ./install-owncloud 1 2 ./start-node ansible-playbook owncloud.yaml pre.yaml own.yaml mysql.yaml include VAGRANT UP prerequisiti OwnCloud Server Configurazione del database MySQL
  • 13.
    Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud Scuola Politecnica e delle Scienze di Base Corso di Laurea in Ingegneria Informatica Conclusioni Il lavoro svolto ha dato modo di sperimentare: la funzionalità di autoconfigurazione fornita dal sistema applicativo OwnCloud e i numerosi vantaggi offerti dalla fruizione di tale servizio; le possibili funzionalità derivanti dall’integrazione tra Ansible e Vagrant; la semplicità di scrittura e l’efficacia dei Playbooks nell’esecuzione di operazioni più o meno complesse; i vantaggi derivanti dall’utilizzo dello strumento Vagrant nella costruzione e nella gestione delle virtual machines. Sviluppi futuri Integrare al progetto nuovi Playbooks per la configurazione di altri DBMS, oltre a quello già fornito per MySQL. Sfruttare Ansible anche per il provisioning della virtual machine, oltre che per il deployment delle applicazioni. Sperimentare l’utilizzo dei plugin di Vagrant, integrando OpenStack nel Vagrantfile come provider alternativo a VirtualBox.