94
Introduction to DevOps with Ansible

Introduzione al DevOps con Ansible

Embed Size (px)

Citation preview

Page 1: Introduzione al DevOps con Ansible

Introduction toDevOps with

Ansible

Page 2: Introduzione al DevOps con Ansible

Matteo Magnihttp://bit.ly/devops-ansible

Page 3: Introduzione al DevOps con Ansible

In informatica DevOps (dalla contrazione inglese didevelopment, "sviluppo", e operations, qui simile a

"messa in produzione" o "deployment") è unametodologia di sviluppo del software che punta allacomunicazione, collaborazione e integrazione tra

sviluppatori e addetti alle operations dell'informationtechnology (IT)

[wikipedia]

Page 4: Introduzione al DevOps con Ansible

Con il termine “Metodologie Agili” ci si riferisce aduna serie di metodologie di sviluppo softwareispirate dal “Manifesto Agile”, impiegate per

superare i limiti emersi dal modello tradizionale “acascata” (waterfall).

[wikipedia]

Page 5: Introduzione al DevOps con Ansible

Tra le pratiche Agili una è quella di avere frequentirilasci di nuove versioni del software:

An Agile team frequently releases its product intothe hands of end users, listening to feedback,

whether critical or appreciative..

[wikipedia]

Page 6: Introduzione al DevOps con Ansible

Rilasci

Page 7: Introduzione al DevOps con Ansible

RilasciIn molte aziende però i rilasci applicativi sono eventi ad alto impatto e

rischio, coinvolgendo più gruppi di lavoro.

Page 8: Introduzione al DevOps con Ansible

RilasciIn molte aziende però i rilasci applicativi sono eventi ad alto impatto e

rischio, coinvolgendo più gruppi di lavoro.L’obiettivo è mettere in produzione nuove feature o correzioni di bug il

più velocemente possibile e con il minor numero di rischi è moltodifficile

Page 9: Introduzione al DevOps con Ansible

I dev spingono per mettere subito online le nuove feature

Page 10: Introduzione al DevOps con Ansible

I dev spingono per mettere subito online le nuove featurei QA inoltrano

Page 11: Introduzione al DevOps con Ansible

I dev spingono per mettere subito online le nuove featurei QA inoltrano

gli operation sono molto prudenti perché sanno che toccarel’infrastruttura potrebbe creare problemi.

Page 12: Introduzione al DevOps con Ansible
Page 13: Introduzione al DevOps con Ansible

Come possiamo fare?

Page 14: Introduzione al DevOps con Ansible

Sviluppare e testare in ambienti simili a quelli di produzione

Page 15: Introduzione al DevOps con Ansible

Sviluppare e testare in ambienti simili a quelli di produzioneDistribuire con processi automatici, ripetibili e affidabili

Page 16: Introduzione al DevOps con Ansible

Sviluppare e testare in ambienti simili a quelli di produzioneDistribuire con processi automatici, ripetibili e affidabili

Monitorare e convalidare la qualità operativa

Page 17: Introduzione al DevOps con Ansible

Sviluppare e testare in ambienti simili a quelli di produzioneDistribuire con processi automatici, ripetibili e affidabili

Monitorare e convalidare la qualità operativaAmplificare e accelerare il ritorno di feedback da parte degli utenti

Page 18: Introduzione al DevOps con Ansible

Continuous integration etesting

Page 19: Introduzione al DevOps con Ansible

Continuous delivery edeployment

Page 20: Introduzione al DevOps con Ansible

Continuous operations

Page 21: Introduzione al DevOps con Ansible

Continuous assessment

Page 22: Introduzione al DevOps con Ansible
Page 23: Introduzione al DevOps con Ansible
Page 24: Introduzione al DevOps con Ansible

L’utilizzo di pratiche DevOps spesso parte dalbisogno di poter creare, gestire, condividere ereplicare configurazioni di ambienti complessi

Page 25: Introduzione al DevOps con Ansible

Se pensiamo ad una infrastruttura web comead esempio lo stack LAMP in una soluzione

dove abbiamo più ambienti

Page 26: Introduzione al DevOps con Ansible

Se pensiamo ad una infrastruttura web comead esempio lo stack LAMP in una soluzione

dove abbiamo più ambienti

Development

Page 27: Introduzione al DevOps con Ansible

Se pensiamo ad una infrastruttura web comead esempio lo stack LAMP in una soluzione

dove abbiamo più ambienti

DevelopmentTesting

Page 28: Introduzione al DevOps con Ansible

Se pensiamo ad una infrastruttura web comead esempio lo stack LAMP in una soluzione

dove abbiamo più ambienti

DevelopmentTestingStaging

Page 29: Introduzione al DevOps con Ansible

Se pensiamo ad una infrastruttura web comead esempio lo stack LAMP in una soluzione

dove abbiamo più ambienti

DevelopmentTestingStaging

Production

Page 30: Introduzione al DevOps con Ansible
Page 31: Introduzione al DevOps con Ansible

Quando devo aggiungere una nuova dipendenza di infrastruttura?

Page 32: Introduzione al DevOps con Ansible

Quando devo aggiungere una nuova dipendenza di infrastruttura?Un nuovo pacchetto?

Page 33: Introduzione al DevOps con Ansible

Quando devo aggiungere una nuova dipendenza di infrastruttura?Un nuovo pacchetto?Un nuovo servizio?

Page 34: Introduzione al DevOps con Ansible

developer

Page 35: Introduzione al DevOps con Ansible

La metodologia DevOps aiuta le aziendenella gestione dei rilasci, standardizzando gli

ambienti di sviluppo.

Le aziende con problemi di automazione deirilasci solitamente hanno già un processoautomatico in essere ma lo vorrebbero più

flessibile e controllabile.

Page 36: Introduzione al DevOps con Ansible

Idealmente tale automazione potrebbeessere utilizzata anche da risorse non

operative (non appartenenti all'ITOperations) su ambienti non di produzione.

In questo modo gli sviluppatori hanno adisposizione un maggiore controllo degli

ambienti, dando all'infrastruttura una visionepiù incentrata sull'applicazione.[wikipedia]

Page 37: Introduzione al DevOps con Ansible
Page 38: Introduzione al DevOps con Ansible

Come sviluppatori siamo abituati a gestirediverse dipendenze tra componenti software

(classi, package e librerie)

Ma anche le infrastrutture hanno delledipendenze!

Page 39: Introduzione al DevOps con Ansible

Come sviluppatori siamo abituati a gestirediverse dipendenze tra componenti software

(classi, package e librerie)

Ma anche le infrastrutture hanno delledipendenze!

File e Directory

Page 40: Introduzione al DevOps con Ansible

Come sviluppatori siamo abituati a gestirediverse dipendenze tra componenti software

(classi, package e librerie)

Ma anche le infrastrutture hanno delledipendenze!

File e DirectoryUtenti

Page 41: Introduzione al DevOps con Ansible

Come sviluppatori siamo abituati a gestirediverse dipendenze tra componenti software

(classi, package e librerie)

Ma anche le infrastrutture hanno delledipendenze!

File e DirectoryUtenti

Software e loro configurazione

Page 42: Introduzione al DevOps con Ansible

Possiamo usare un software per il controllodi versione e sfruttarne tutte le potenzialità.

Git, Mercurial, Svn

Page 43: Introduzione al DevOps con Ansible

serve qualcuno che esegua le operazioni ripetitive

Page 44: Introduzione al DevOps con Ansible

serve qualcuno che esegua le operazioni ripetitive

Page 45: Introduzione al DevOps con Ansible

Ansiblehttps://www.ansible.com

Page 46: Introduzione al DevOps con Ansible

"Deploy apps. Manage systems. Crush complexity.Ansible helps you build a strong foundation for DevOps."

Page 47: Introduzione al DevOps con Ansible

github.com/ansible/ansible

GNU GENERAL PUBLICLICENSEVersion 3

Page 48: Introduzione al DevOps con Ansible

The name "Ansible" references a fictional instantaneous hyperspacecommunication system (as featured in Orson Scott Card's Ender'sGame (1985), and originally invented by Ursula K. Le Guin for her

novel Rocannon's World (1966)).

Page 49: Introduzione al DevOps con Ansible

debian

$ deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main$ deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main$ sudo apt-get update$ sudo apt-get update$ sudo apt-get install ansible$ sudo apt-get install ansible

fedora

$ sudo dnf -y install ansible$ sudo dnf -y install ansible

Pip

$ pip install ansible$ pip install ansible

Page 50: Introduzione al DevOps con Ansible

Dipendenze

Python

Page 51: Introduzione al DevOps con Ansible

Dipendenze

Pythonssh

Page 52: Introduzione al DevOps con Ansible

Ansible works by connecting to your nodes and pushing out smallprograms, called "Ansible modules" to them. These programs arewritten to be resource models of the desired state of the system.Ansible then executes these modules (over SSH by default), and

removes them when finished.

Page 53: Introduzione al DevOps con Ansible

YAML

YAML: YAML Ain't Markup LanguageWhat It Is: YAML is a human friendly data serialization standard for all

programming languages.yaml.org

Page 54: Introduzione al DevOps con Ansible

galaxy_info:galaxy_info:author: Matteo Magniauthor: Matteo Magnidescription: just another geekdescription: just another geeklicense: license Apache 2.0license: license Apache 2.0platforms:platforms: - name: Debian - name: Debian versions: versions: - jessie - jessiecategories:categories: - system - systemdependencies: []dependencies: []

Page 55: Introduzione al DevOps con Ansible

Ansible glossary

Page 56: Introduzione al DevOps con Ansible

Ansible glossaryInventory

Page 57: Introduzione al DevOps con Ansible

Ansible glossaryInventory

Tasks

Page 58: Introduzione al DevOps con Ansible

Ansible glossaryInventory

TasksVariables

Page 59: Introduzione al DevOps con Ansible

Ansible glossaryInventory

TasksVariables

Roles

Page 60: Introduzione al DevOps con Ansible

Ansible glossaryInventory

TasksVariables

RolesHandlers

Page 61: Introduzione al DevOps con Ansible

Ansible glossaryInventory

TasksVariables

RolesHandlersPlaybook

Page 62: Introduzione al DevOps con Ansible

Inventory[databases][databases]stp.ilbonzo.net ansible_ssh_user=scottstp.ilbonzo.net ansible_ssh_user=scott

[webservers][webservers]aic.ilbonzo.net ansible_ssh_user=layneaic.ilbonzo.net ansible_ssh_user=layne

Page 63: Introduzione al DevOps con Ansible

Tasks- name: add group devel- name: add group devel group: name=devel state=present group: name=devel state=present- name: Apache | install apache- name: Apache | install apache apt: name=apache2 state=latest apt: name=apache2 state=latest

Page 64: Introduzione al DevOps con Ansible

Variablesuser: vagrantuser: vagrantgroup: www-datagroup: www-datadocument_root: /var/www/officina-linux.itdocument_root: /var/www/officina-linux.it

Page 65: Introduzione al DevOps con Ansible

Handlers- name: restart postgresql- name: restart postgresql service: name=postgresql state=restarted service: name=postgresql state=restarted- name: stop postgresql- name: stop postgresql service: name=postgresql state=stopped service: name=postgresql state=stopped- name: start postgresql- name: start postgresql service: name=postgresql state=started service: name=postgresql state=started

Page 66: Introduzione al DevOps con Ansible

Roles╰╰──➤➤ ls -l database ls -l database total 0 total 0 drwxr-xr-x 10 bonzo staff 340 Dec 6 10:45 files drwxr-xr-x 10 bonzo staff 340 Dec 6 10:45 files drwxr-xr-x 10 bonzo staff 340 Dec 6 10:45 handlers drwxr-xr-x 10 bonzo staff 340 Dec 6 10:45 handlers drwxr-xr-x 10 bonzo staff 340 Dec 6 10:45 tasks drwxr-xr-x 10 bonzo staff 340 Dec 6 10:45 tasks drwxr-xr-x 5 bonzo staff 170 Dec 6 10:45 templates drwxr-xr-x 5 bonzo staff 170 Dec 6 10:45 templates

Page 67: Introduzione al DevOps con Ansible

Playbook- hosts: all- hosts: all sudo: true sudo: true handlers: handlers: - include: handlers/main.yml - include: handlers/main.yml pre_tasks: pre_tasks: - name: update apt cache - name: update apt cache shell: apt-get update shell: apt-get update - name: upgrade apt - name: upgrade apt shell: apt-get upgrade -y shell: apt-get upgrade -y roles: roles: - webserver - webserver - database - database- include: nfs.yml- include: nfs.yml

Page 68: Introduzione al DevOps con Ansible

Ansible Galaxy

Page 69: Introduzione al DevOps con Ansible
Page 70: Introduzione al DevOps con Ansible

Virtualizzare può essere d'aiuto per sperimentare enon solo

Page 71: Introduzione al DevOps con Ansible

Ci serve qualcuno che ci metta a disposizione semplicemente delleVirtual Machine.

Page 72: Introduzione al DevOps con Ansible

Ci serve qualcuno che ci metta a disposizione semplicemente delleVirtual Machine.

Potrebbe essere un qualsiasi sistema di cloud.

Page 73: Introduzione al DevOps con Ansible

Ci serve qualcuno che ci metta a disposizione semplicemente delleVirtual Machine.

Potrebbe essere un qualsiasi sistema di cloud.In sviluppo possiamo usare Vagrant

Page 74: Introduzione al DevOps con Ansible

Vagrant"Create and configure lightweight, reproducible, and portable

development environments."vagrantup.com

Page 75: Introduzione al DevOps con Ansible

ProviderVirtualbox

Page 76: Introduzione al DevOps con Ansible

ProviderVirtualbox

VMware

Page 77: Introduzione al DevOps con Ansible

ProviderVirtualbox

VMware

Hyper-V

Page 78: Introduzione al DevOps con Ansible

ProviderVirtualbox

VMware

Hyper-V

Docker

Page 79: Introduzione al DevOps con Ansible
Page 80: Introduzione al DevOps con Ansible

Galaxy role

github.com/ilbonzo/ansible-minecraft

Page 81: Introduzione al DevOps con Ansible
Page 82: Introduzione al DevOps con Ansible
Page 83: Introduzione al DevOps con Ansible
Page 84: Introduzione al DevOps con Ansible
Page 85: Introduzione al DevOps con Ansible
Page 86: Introduzione al DevOps con Ansible

Playbackisn'tsupportedonthisdevice.

AnsibleMinecraft

0:00/2:30

https://youtu.be/ICAlhy4EI44

Page 87: Introduzione al DevOps con Ansible

fonti

ansible.com

Page 88: Introduzione al DevOps con Ansible

fonti

ansible.comdevops.com

Page 89: Introduzione al DevOps con Ansible

fonti

ansible.comdevops.comgithub.com

Page 90: Introduzione al DevOps con Ansible

fonti

ansible.comdevops.comgithub.com

devopsreactions.tumblr.com

Page 91: Introduzione al DevOps con Ansible

fonti

ansible.comdevops.comgithub.com

devopsreactions.tumblr.comlosviluppatore.it

Page 92: Introduzione al DevOps con Ansible

fonti

ansible.comdevops.comgithub.com

devopsreactions.tumblr.comlosviluppatore.it

buildings.it

Page 93: Introduzione al DevOps con Ansible

Questions?

Page 94: Introduzione al DevOps con Ansible

Thanks toofficina-linux.it