Introduzione al DevOps con Ansible

Post on 07-Jan-2017

55 Views

Category:

Engineering

6 Downloads

Preview:

Click to see full reader

Transcript

Introduction toDevOps with

Ansible

Matteo Magnihttp://bit.ly/devops-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]

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]

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]

Rilasci

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

rischio, coinvolgendo più gruppi di lavoro.

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

I dev spingono per mettere subito online le nuove feature

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

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.

Come possiamo fare?

Sviluppare e testare in ambienti simili a quelli di produzione

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

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

Monitorare e convalidare la qualità operativa

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

Continuous integration etesting

Continuous delivery edeployment

Continuous operations

Continuous assessment

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

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

dove abbiamo più ambienti

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

dove abbiamo più ambienti

Development

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

dove abbiamo più ambienti

DevelopmentTesting

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

dove abbiamo più ambienti

DevelopmentTestingStaging

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

dove abbiamo più ambienti

DevelopmentTestingStaging

Production

Quando devo aggiungere una nuova dipendenza di infrastruttura?

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

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

developer

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.

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]

Come sviluppatori siamo abituati a gestirediverse dipendenze tra componenti software

(classi, package e librerie)

Ma anche le infrastrutture hanno delledipendenze!

Come sviluppatori siamo abituati a gestirediverse dipendenze tra componenti software

(classi, package e librerie)

Ma anche le infrastrutture hanno delledipendenze!

File e Directory

Come sviluppatori siamo abituati a gestirediverse dipendenze tra componenti software

(classi, package e librerie)

Ma anche le infrastrutture hanno delledipendenze!

File e DirectoryUtenti

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

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

Git, Mercurial, Svn

serve qualcuno che esegua le operazioni ripetitive

serve qualcuno che esegua le operazioni ripetitive

Ansiblehttps://www.ansible.com

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

github.com/ansible/ansible

GNU GENERAL PUBLICLICENSEVersion 3

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)).

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

Dipendenze

Python

Dipendenze

Pythonssh

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.

YAML

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

programming languages.yaml.org

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: []

Ansible glossary

Ansible glossaryInventory

Ansible glossaryInventory

Tasks

Ansible glossaryInventory

TasksVariables

Ansible glossaryInventory

TasksVariables

Roles

Ansible glossaryInventory

TasksVariables

RolesHandlers

Ansible glossaryInventory

TasksVariables

RolesHandlersPlaybook

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

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

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

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

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

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

Ansible Galaxy

Virtualizzare può essere d'aiuto per sperimentare enon solo

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

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

Potrebbe essere un qualsiasi sistema di cloud.

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

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

Vagrant"Create and configure lightweight, reproducible, and portable

development environments."vagrantup.com

ProviderVirtualbox

ProviderVirtualbox

VMware

ProviderVirtualbox

VMware

Hyper-V

ProviderVirtualbox

VMware

Hyper-V

Docker

Galaxy role

github.com/ilbonzo/ansible-minecraft

Playbackisn'tsupportedonthisdevice.

AnsibleMinecraft

0:00/2:30

https://youtu.be/ICAlhy4EI44

fonti

ansible.com

fonti

ansible.comdevops.com

fonti

ansible.comdevops.comgithub.com

fonti

ansible.comdevops.comgithub.com

devopsreactions.tumblr.com

fonti

ansible.comdevops.comgithub.com

devopsreactions.tumblr.comlosviluppatore.it

fonti

ansible.comdevops.comgithub.com

devopsreactions.tumblr.comlosviluppatore.it

buildings.it

Questions?

Thanks toofficina-linux.it

top related