SlideShare a Scribd company logo
1 of 17
Download to read offline
Infrastructure as Data
24/11/2013

Francesco Collovà - francesco.collova @ gmail.com
about.me - http://about.me/francesco.collova
LinkedIn it.linkedin.com/in/fcollova/
I progetti SW
All’inizio c’erano due figure:
● Gli sviluppatori che facevano il SW
● I sistemisti che lo installavano e lo configuravano.
Fino a quando!!!!
...anche i sistemisti hanno cominciato a scrivere SW.
- Script Shell: installare e configurare automaticamente
SW per il deploy dei sistemi
Oggi:
i sistemi software diventano sempre più complessi
distribuiti, in cloud, in continuo sviluppo
e deployment.
Gli script non bastano più:
● non sono robusti
● difficili da comprendere
● tutti diversi tra loro
Facilità - Velocità - Affidabilità
I sistemi sviluppati con metodologia agile, sono complessi,
distribuiti e in cloud e pertanto occorre:
● Un modo semplice per installare e configurare i server nuovi
o quelli già esistenti;
● Un modo di "sincronizzare" la configurazione ad una
baseline;
● Ricreare una stessa macchina tante volte quanto necessita:
in modo veloce, affidabile e senza sforzo;
● Un modo per gestire i “deployment” complessi che consenta
anche di orchestrare servizi interconnessi;
Infrastructure as Code
Forse avete sentito parlare del concetto di "infrastruttura
come codice", mantra della cultura DevOps.
(http://sdarchitect.wordpress.com/2012/12/13/infrastructure-as-code/)

Questa cultura ha fatto emergere tool popolari come Chef o
Puppet. Tuttavia questi tools si sono rivelati
incredibilmente complessi da utilizzare
anche per i casi più semplici
Infrastructure as Data: Ansible
Ansible è un motore di orchestrazione semplice e radicale che rende le
applicazioni ed i sistemi più facile da installare e distribuire.
●
●
●

Si evita di scrivere script o codice personalizzato per distribuire e
aggiornare le applicazioni
Usa un linguaggio che si avvicina ad un inglese semplice
Usa SSH, senza agenti da installare su sistemi remoti

Ansible è il modo più semplice per automatizzare ed orchestrare:
●
●
●

Installazione di applicazioni distribuite
Gestione della configurazione
Gestire un ciclo continuo di installazione e sviluppo
Ansible
Creato da Michael De Haan
Open Source: https://github.com/ansible/ansible/
(ora anche supportato da AnsibleWorks)
● Documentato molto bene
● Supportato da una community molto attiva di
sviluppatori
Architettura
SSH - Nessun agente
da installare
Come funziona - Step 1: Gli hosts
[local]
127.0.0.1
[webserver]
www.webserv1.it
www..webserv2.it
[database]
10.0.1.123

Definizione dei gruppi di
host su cui si eseguiranno
i comandi o interi playbook
Come funziona - Step 2: i Comandi
[local]
127.0.0.1

Host

[webserver]
www.webserv1.it
www..webserv2.it
[database]
10.0.1.123

Esempi di comandi
ansible all -m ping
ansible webserver -a "/usr/bin/command arg1 arg2" --limit

$ ansible database -i hosts -a "ls -lsa /usr"
10.0.1.123 | success | rc=0 >>
total 56
4 drwxr-xr-x 10 root root 4096 Apr 10 2012 .
4 drwxrwxr-x 22 root admin 4096 Jul 26 08:29 ..
20 drwxr-xr-x 2 root root 20480 Oct 10 15:39 bin
4 drwxr-xr-x 2 root root 4096 Jan 27 2012 games
4 drwxr-xr-x 31 root root 4096 Jul 26 11:18 include
4 drwxr-xr-x 40 root root 4096 Oct 7 16:07 lib
4 drwxr-xr-x 10 root root 4096 Apr 10 2012 local
4 drwxr-xr-x 2 root root 4096 Oct 7 16:08 sbin
4 drwxr-xr-x 81 root root 4096 Aug 28 14:32 share
4 drwxr-xr-x 2 root root 4096 Jan 27 2012 src
$
Come funziona - Step 3: Playbook
● File in formato YAML (http://en.wikipedia.org/wiki/YAML)
● Formato dichiarativo della vostra configurazione
● Si possono specificare diversi “playbook” che si
riferiscono a vari gruppi di macchine
La cosa grande è che con Ansible i playbook sono per la
maggior parte idempotenti. Possono essere eseguiti molte
volte il risultato non cambia.
Idempotenza (idempotent)
In informatica, un'operazione idempotente è quella che non ha alcun effetto
aggiuntivo se viene eseguita più di una volta con gli stessi parametri di
ingresso. Cioè non non importa quante volte si chiama l'operazione il risultato
sarà lo stesso
Le operazioni idempotenti sono spesso utilizzati nella progettazione di protocolli
di rete, dove una richiesta di eseguire un'operazione di accadere viene
garantita almeno una volta, ma potrebbe anche verificarsi più di una volta. Se
l'operazione è idempotente, allora non c'è nulla di male nell’eseguire
l'operazione due o più volte il risultato sarà sempre lo stesso.
Come funziona - Step 3: Playbook
l’insieme dei task che devono essere svolti per fare il
Playbook
--- hosts: all
user: root
vars_files:
- vars/settings-default.yml
tasks:
- name: PHP configuration file, php.ini
action: template src=templates/etc-php5-apache2-php-ini.
j2 dest=/etc/php5/apache2/php.ini
notify: Restart Apache
handlers:
- name: Restart Apache
action: service name=apache2 state=restarted

deploy di un sistema sono registrati in un Playbook
ansible in formato YAML.
I playbook vengono poi eseguite sugli host.

Le componenti principali di un “playbook” Ansible
sono:
●

Definizione degli Host

●

Le “Variable” che sono usate nei “playbook” o
nei “template”

●

I “Task” che saranno eseguiti nel “playbook”

●

Gli “Handlers” che gestiscono le risposte di
cambiamento sul sistema fatto dai task.
Task

Esempio di Playbook
--

Ogni play contiene una lista di task che vengono
eseguiti uno alla volta sugli host a cui si applica il
play

- hosts: webserver
user: root

Module

sudo: no

Ansible dispone di una serie di moduli (‘‘module
library’) che possono essere eseguiti direttamente
sugli host remoti utilizzandoli nei playbook.

tasks:
- name: install apache2
action:

apt

pkg=apache2 state=latest

notify:

Handler

- name: Make sure index.html is present for the default virtual host

Eseguono delle operazioni quando si verificano
eventi eventi a seguito di un task che ha causato dei
cambiamenti

action: copy src=files/index.html dest=/var/www/index.html

Le azioni “notify” hanno dei trigger che sono eseguiti
una sola volta anche se la notifica viene da più task.

- start apache2

- name: Make sure index.html is owned by www-data

Ad esempio può accadere che apache richieda un

action: file path=/var/www/index.html owner=www-data group=www-data perchè è cambiata la sua configurazione e
restart
questo viene fatto una sola volta anche se più tsk
handlers:
- name: start apache2
action: service name=apache2 state=started

hanno cambiato la sua configurazione.
Alcuni dei moduli di Ansible
● add_host

● mount

● apt

● mysql_db

● apt_key

● mysql_user

● apt_repository

● pause

● authorized_key

● ping

● command

● postgresql_db

● copy

● postgresql_user

● cron

● s3

● ec2

● script

● fetch

● service

● file

● shell

● get_url

● subversion

● git

● template

● group

● user

● hg

● virt

● lineinfile

● wait_for

● mail

● yum

Moduli per gestire
●

EC2, Rackspace, Linode, OpenStack,
Digital Ocean

●

Route53, S3, RDS

●

MySQL, Postgres, Riak, Mongo

●

Airbrake, Monit, Nagios, NewRelic, Pingdom

●

Netscaler, BigIP, Arista

●

FlowDock, HipChat, IRC, Jaber, Email
Infrastructure as Data:
Ansible
La configurazione automatica delle macchine è abbastanza facile con Ansible.
E’ possibile configurare una singola macchina o tutta una serie con un processo
riproducibile.
●
●
●

Tu descrivi la tua infrastruttura (in modo dichiarativo)
Definisci la sua versione
“Applichi” la descrizione alla tua infrastruttura:
l’esecuzione la fa Ansible
Link
Ansible
●

https://github.com/ansible/ansible

Presentations
●
●

https://speakerdeck.com/mpdehaan/ansible
http://www.capsunlock.net/career/ansible-pyconph-2012.pdf

AnsibleWorks
●

http://www.ansibleworks.com/

Tutorial
●
●

https://github.com/ansible/ansible-examples
http://julien.ponge.org/blog/scalable-and-understandable-provisioning-with-ansible-and-vagrant/

More Related Content

What's hot

Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzionegiacomos
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017MongoDB
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Romualdo Gobbo
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazioneDaniele Costarella
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentalsmvetro
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveCommit University
 
Introduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciutoIntroduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciutoDaniele Megna
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Valerio Radice
 
node.js e Postgresql
node.js e Postgresqlnode.js e Postgresql
node.js e PostgresqlLucio Grenzi
 
Continuous Deployment - Agile Day 2010
Continuous Deployment - Agile Day 2010Continuous Deployment - Agile Day 2010
Continuous Deployment - Agile Day 2010migratore
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaXPeppers
 
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019Marco Chiesi
 

What's hot (15)

Livin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzioneLivin' with Docker - dallo sviluppo alla produzione
Livin' with Docker - dallo sviluppo alla produzione
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazione
 
Docker Fudamentals
Docker FudamentalsDocker Fudamentals
Docker Fudamentals
 
Stanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al PrgressiveStanco delle solite Web App? Passa al Prgressive
Stanco delle solite Web App? Passa al Prgressive
 
Introduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciutoIntroduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciuto
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]
 
node.js e Postgresql
node.js e Postgresqlnode.js e Postgresql
node.js e Postgresql
 
Continuous Deployment - Agile Day 2010
Continuous Deployment - Agile Day 2010Continuous Deployment - Agile Day 2010
Continuous Deployment - Agile Day 2010
 
Docker
Docker Docker
Docker
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Agileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastrutturaAgileday2013 pratiche agili applicate all'infrastruttura
Agileday2013 pratiche agili applicate all'infrastruttura
 
DevOps Jump Start
DevOps Jump StartDevOps Jump Start
DevOps Jump Start
 
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
Grunt: automazione per sviluppatori “pigri” - WordCamp Bari 2019
 

Similar to Infrastructure as Data

Da Zero all'open per PA e PMI
Da Zero all'open per PA e PMIDa Zero all'open per PA e PMI
Da Zero all'open per PA e PMINaLUG
 
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMwareSistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMwareClaudio Cardinali
 
La Virtualizzazione 2010
La Virtualizzazione 2010La Virtualizzazione 2010
La Virtualizzazione 2010Davide Grossato
 
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloudAutomatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloudSonia Pepe
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)Davide Cerbo
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migrationAndrea Cirioni
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss CloudJBug Italy
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009Sanne Grinovero
 
Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side JavascriptMatteo Napolitano
 
festival ICT 2013: Gestire criticità in maniera efficiente per liberare slot ...
festival ICT 2013: Gestire criticità in maniera efficiente per liberare slot ...festival ICT 2013: Gestire criticità in maniera efficiente per liberare slot ...
festival ICT 2013: Gestire criticità in maniera efficiente per liberare slot ...festival ICT 2016
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Mattia Milleri
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016Michele Nasti
 
Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Marco Chiesi
 
Linux Security Hardening - panoramica sui principi generali per la riduzione...
Linux  Security Hardening - panoramica sui principi generali per la riduzione...Linux  Security Hardening - panoramica sui principi generali per la riduzione...
Linux Security Hardening - panoramica sui principi generali per la riduzione...Marco Ferrigno
 
Hardening
HardeningHardening
HardeningNaLUG
 
Integrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzatoIntegrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzatoGian Maria Ricci
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the cloudsDavide Cerbo
 

Similar to Infrastructure as Data (20)

Da Zero all'open per PA e PMI
Da Zero all'open per PA e PMIDa Zero all'open per PA e PMI
Da Zero all'open per PA e PMI
 
Da 0 all'open per PA e PMI
Da 0 all'open per PA e PMIDa 0 all'open per PA e PMI
Da 0 all'open per PA e PMI
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMwareSistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
Sistemi di Virtualizzazione con Gnu/Linux Xen vs VMware
 
La Virtualizzazione 2010
La Virtualizzazione 2010La Virtualizzazione 2010
La Virtualizzazione 2010
 
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloudAutomatic Cloud Deployment: un caso di studio basato sul software OwnCloud
Automatic Cloud Deployment: un caso di studio basato sul software OwnCloud
 
La Virtualizzazione
La VirtualizzazioneLa Virtualizzazione
La Virtualizzazione
 
Working between the clouds (versione completa)
Working between the clouds (versione completa)Working between the clouds (versione completa)
Working between the clouds (versione completa)
 
DbUp - A real case of database migration
DbUp - A real case of database migrationDbUp - A real case of database migration
DbUp - A real case of database migration
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss Cloud
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009
 
Node.js - Server Side Javascript
Node.js - Server Side JavascriptNode.js - Server Side Javascript
Node.js - Server Side Javascript
 
festival ICT 2013: Gestire criticità in maniera efficiente per liberare slot ...
festival ICT 2013: Gestire criticità in maniera efficiente per liberare slot ...festival ICT 2013: Gestire criticità in maniera efficiente per liberare slot ...
festival ICT 2013: Gestire criticità in maniera efficiente per liberare slot ...
 
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
Progetto e implementazione di una pipeline di sviluppo software con tecnologi...
 
Node js dev day napoli 2016
Node js dev day napoli 2016Node js dev day napoli 2016
Node js dev day napoli 2016
 
Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018Chi ha paura della command-line? - WordCamp Roma 2018
Chi ha paura della command-line? - WordCamp Roma 2018
 
Linux Security Hardening - panoramica sui principi generali per la riduzione...
Linux  Security Hardening - panoramica sui principi generali per la riduzione...Linux  Security Hardening - panoramica sui principi generali per la riduzione...
Linux Security Hardening - panoramica sui principi generali per la riduzione...
 
Hardening
HardeningHardening
Hardening
 
Integrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzatoIntegrazione continua e Deploy automatizzato
Integrazione continua e Deploy automatizzato
 
Working between the clouds
Working between the cloudsWorking between the clouds
Working between the clouds
 

More from Francesco Collova'

Lean Startup Machine Napoli Experiment Board
Lean Startup Machine Napoli Experiment BoardLean Startup Machine Napoli Experiment Board
Lean Startup Machine Napoli Experiment BoardFrancesco Collova'
 
Web of Things (wiring web objects with Node-RED)
Web of Things (wiring web objects with Node-RED)Web of Things (wiring web objects with Node-RED)
Web of Things (wiring web objects with Node-RED)Francesco Collova'
 
Machine Learning: Introduction to Neural Networks
Machine Learning: Introduction to Neural NetworksMachine Learning: Introduction to Neural Networks
Machine Learning: Introduction to Neural NetworksFrancesco Collova'
 
(Social) Network Analysis per le organizzazioni
(Social) Network Analysis per le organizzazioni(Social) Network Analysis per le organizzazioni
(Social) Network Analysis per le organizzazioniFrancesco Collova'
 
Turismo e social web nei comuni italiani
Turismo e social web nei comuni italianiTurismo e social web nei comuni italiani
Turismo e social web nei comuni italianiFrancesco Collova'
 

More from Francesco Collova' (6)

Lean Startup Machine Napoli Experiment Board
Lean Startup Machine Napoli Experiment BoardLean Startup Machine Napoli Experiment Board
Lean Startup Machine Napoli Experiment Board
 
Web of Things (wiring web objects with Node-RED)
Web of Things (wiring web objects with Node-RED)Web of Things (wiring web objects with Node-RED)
Web of Things (wiring web objects with Node-RED)
 
Machine Learning: Introduction to Neural Networks
Machine Learning: Introduction to Neural NetworksMachine Learning: Introduction to Neural Networks
Machine Learning: Introduction to Neural Networks
 
Metodologia_AIA
Metodologia_AIAMetodologia_AIA
Metodologia_AIA
 
(Social) Network Analysis per le organizzazioni
(Social) Network Analysis per le organizzazioni(Social) Network Analysis per le organizzazioni
(Social) Network Analysis per le organizzazioni
 
Turismo e social web nei comuni italiani
Turismo e social web nei comuni italianiTurismo e social web nei comuni italiani
Turismo e social web nei comuni italiani
 

Infrastructure as Data

  • 1. Infrastructure as Data 24/11/2013 Francesco Collovà - francesco.collova @ gmail.com about.me - http://about.me/francesco.collova LinkedIn it.linkedin.com/in/fcollova/
  • 2. I progetti SW All’inizio c’erano due figure: ● Gli sviluppatori che facevano il SW ● I sistemisti che lo installavano e lo configuravano. Fino a quando!!!! ...anche i sistemisti hanno cominciato a scrivere SW. - Script Shell: installare e configurare automaticamente
  • 3. SW per il deploy dei sistemi Oggi: i sistemi software diventano sempre più complessi distribuiti, in cloud, in continuo sviluppo e deployment. Gli script non bastano più: ● non sono robusti ● difficili da comprendere ● tutti diversi tra loro
  • 4. Facilità - Velocità - Affidabilità I sistemi sviluppati con metodologia agile, sono complessi, distribuiti e in cloud e pertanto occorre: ● Un modo semplice per installare e configurare i server nuovi o quelli già esistenti; ● Un modo di "sincronizzare" la configurazione ad una baseline; ● Ricreare una stessa macchina tante volte quanto necessita: in modo veloce, affidabile e senza sforzo; ● Un modo per gestire i “deployment” complessi che consenta anche di orchestrare servizi interconnessi;
  • 5. Infrastructure as Code Forse avete sentito parlare del concetto di "infrastruttura come codice", mantra della cultura DevOps. (http://sdarchitect.wordpress.com/2012/12/13/infrastructure-as-code/) Questa cultura ha fatto emergere tool popolari come Chef o Puppet. Tuttavia questi tools si sono rivelati incredibilmente complessi da utilizzare anche per i casi più semplici
  • 6. Infrastructure as Data: Ansible Ansible è un motore di orchestrazione semplice e radicale che rende le applicazioni ed i sistemi più facile da installare e distribuire. ● ● ● Si evita di scrivere script o codice personalizzato per distribuire e aggiornare le applicazioni Usa un linguaggio che si avvicina ad un inglese semplice Usa SSH, senza agenti da installare su sistemi remoti Ansible è il modo più semplice per automatizzare ed orchestrare: ● ● ● Installazione di applicazioni distribuite Gestione della configurazione Gestire un ciclo continuo di installazione e sviluppo
  • 7. Ansible Creato da Michael De Haan Open Source: https://github.com/ansible/ansible/ (ora anche supportato da AnsibleWorks) ● Documentato molto bene ● Supportato da una community molto attiva di sviluppatori
  • 8. Architettura SSH - Nessun agente da installare
  • 9. Come funziona - Step 1: Gli hosts [local] 127.0.0.1 [webserver] www.webserv1.it www..webserv2.it [database] 10.0.1.123 Definizione dei gruppi di host su cui si eseguiranno i comandi o interi playbook
  • 10. Come funziona - Step 2: i Comandi [local] 127.0.0.1 Host [webserver] www.webserv1.it www..webserv2.it [database] 10.0.1.123 Esempi di comandi ansible all -m ping ansible webserver -a "/usr/bin/command arg1 arg2" --limit $ ansible database -i hosts -a "ls -lsa /usr" 10.0.1.123 | success | rc=0 >> total 56 4 drwxr-xr-x 10 root root 4096 Apr 10 2012 . 4 drwxrwxr-x 22 root admin 4096 Jul 26 08:29 .. 20 drwxr-xr-x 2 root root 20480 Oct 10 15:39 bin 4 drwxr-xr-x 2 root root 4096 Jan 27 2012 games 4 drwxr-xr-x 31 root root 4096 Jul 26 11:18 include 4 drwxr-xr-x 40 root root 4096 Oct 7 16:07 lib 4 drwxr-xr-x 10 root root 4096 Apr 10 2012 local 4 drwxr-xr-x 2 root root 4096 Oct 7 16:08 sbin 4 drwxr-xr-x 81 root root 4096 Aug 28 14:32 share 4 drwxr-xr-x 2 root root 4096 Jan 27 2012 src $
  • 11. Come funziona - Step 3: Playbook ● File in formato YAML (http://en.wikipedia.org/wiki/YAML) ● Formato dichiarativo della vostra configurazione ● Si possono specificare diversi “playbook” che si riferiscono a vari gruppi di macchine La cosa grande è che con Ansible i playbook sono per la maggior parte idempotenti. Possono essere eseguiti molte volte il risultato non cambia.
  • 12. Idempotenza (idempotent) In informatica, un'operazione idempotente è quella che non ha alcun effetto aggiuntivo se viene eseguita più di una volta con gli stessi parametri di ingresso. Cioè non non importa quante volte si chiama l'operazione il risultato sarà lo stesso Le operazioni idempotenti sono spesso utilizzati nella progettazione di protocolli di rete, dove una richiesta di eseguire un'operazione di accadere viene garantita almeno una volta, ma potrebbe anche verificarsi più di una volta. Se l'operazione è idempotente, allora non c'è nulla di male nell’eseguire l'operazione due o più volte il risultato sarà sempre lo stesso.
  • 13. Come funziona - Step 3: Playbook l’insieme dei task che devono essere svolti per fare il Playbook --- hosts: all user: root vars_files: - vars/settings-default.yml tasks: - name: PHP configuration file, php.ini action: template src=templates/etc-php5-apache2-php-ini. j2 dest=/etc/php5/apache2/php.ini notify: Restart Apache handlers: - name: Restart Apache action: service name=apache2 state=restarted deploy di un sistema sono registrati in un Playbook ansible in formato YAML. I playbook vengono poi eseguite sugli host. Le componenti principali di un “playbook” Ansible sono: ● Definizione degli Host ● Le “Variable” che sono usate nei “playbook” o nei “template” ● I “Task” che saranno eseguiti nel “playbook” ● Gli “Handlers” che gestiscono le risposte di cambiamento sul sistema fatto dai task.
  • 14. Task Esempio di Playbook -- Ogni play contiene una lista di task che vengono eseguiti uno alla volta sugli host a cui si applica il play - hosts: webserver user: root Module sudo: no Ansible dispone di una serie di moduli (‘‘module library’) che possono essere eseguiti direttamente sugli host remoti utilizzandoli nei playbook. tasks: - name: install apache2 action: apt pkg=apache2 state=latest notify: Handler - name: Make sure index.html is present for the default virtual host Eseguono delle operazioni quando si verificano eventi eventi a seguito di un task che ha causato dei cambiamenti action: copy src=files/index.html dest=/var/www/index.html Le azioni “notify” hanno dei trigger che sono eseguiti una sola volta anche se la notifica viene da più task. - start apache2 - name: Make sure index.html is owned by www-data Ad esempio può accadere che apache richieda un action: file path=/var/www/index.html owner=www-data group=www-data perchè è cambiata la sua configurazione e restart questo viene fatto una sola volta anche se più tsk handlers: - name: start apache2 action: service name=apache2 state=started hanno cambiato la sua configurazione.
  • 15. Alcuni dei moduli di Ansible ● add_host ● mount ● apt ● mysql_db ● apt_key ● mysql_user ● apt_repository ● pause ● authorized_key ● ping ● command ● postgresql_db ● copy ● postgresql_user ● cron ● s3 ● ec2 ● script ● fetch ● service ● file ● shell ● get_url ● subversion ● git ● template ● group ● user ● hg ● virt ● lineinfile ● wait_for ● mail ● yum Moduli per gestire ● EC2, Rackspace, Linode, OpenStack, Digital Ocean ● Route53, S3, RDS ● MySQL, Postgres, Riak, Mongo ● Airbrake, Monit, Nagios, NewRelic, Pingdom ● Netscaler, BigIP, Arista ● FlowDock, HipChat, IRC, Jaber, Email
  • 16. Infrastructure as Data: Ansible La configurazione automatica delle macchine è abbastanza facile con Ansible. E’ possibile configurare una singola macchina o tutta una serie con un processo riproducibile. ● ● ● Tu descrivi la tua infrastruttura (in modo dichiarativo) Definisci la sua versione “Applichi” la descrizione alla tua infrastruttura: l’esecuzione la fa Ansible