SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
●
    Cloudy
Infrastructure as data with Ansible:
systems / cloud deployment and management for
the lazy developer

    Carlo Bonamico - carlo.bonamico@nispro.it
               NIS s.r.l. / JUG Genova
     http://www.nispro.it / http://juggenova.net
What is this all about?
                      Carlo Bonamico                     JUG Genova / NIS s.r.l.



●   Do you like
    –   Staying up late to reconfigure a server that went out of sync?
    –   Being unable to deploy a critical fix because the upgrade process
        is so fragile and long that “it is better not to touch the system”?
    –   Having to rely on a server that took a week to setup, and lose it
        because of an HD failure?
    –   Be unable to quickly scale your application on multiple servers
        because the IT administration becomes too complex and
        time-consuming?
Ansible Hello World
     Carlo Bonamico           JUG Genova / NIS s.r.l.




If the answer to these question is


                      NO!


     Then this talk is for you!
What do we want?
                Carlo Bonamico          JUG Genova / NIS s.r.l.



●   An easy way of quickly installing and
    configuring new and existing servers
●   A way of “syncing” the configuration to a
    baseline when it drifts
●   A way of recreating a machine as many times
    as you need
    –   Reliably and with no effort
●   A way of managing complex deployments
    –   And orchestrating interconnected services
What do we want?
                  Carlo Bonamico            JUG Genova / NIS s.r.l.



●   A way of doing all of those things


    –   EASILY
    –   QUICKLY
    –   RELIABLY

●   Doing things automatically
    –   Ideally with no additional effort vs doing things
        manually (and with less mistakes!)
An Agile Approach
             Carlo Bonamico                 JUG Genova / NIS s.r.l.



       Our highest priority is to satisfy the customer
through early and continuous delivery of valuable software.
                              Simplicity
 --the art of maximizing the amount of work not done--
                          is essential.


                     The Agile Manifesto
Enter Ansible
                  Carlo Bonamico                JUG Genova / NIS s.r.l.



●   Ansible is your friend!
    –   A tool for doing things automatically
        ●With LESS effort than doing them manually
●   It provides
    –   Remote command execution across multiple machines
    –   File, package and configuration distribution
    –   Automated installations and deployments
What's inside?
Carlo Bonamico   JUG Genova / NIS s.r.l.
Enter Ansible
              Carlo Bonamico         JUG Genova / NIS s.r.l.



●   Created by Michael De Haan of Cobbler
    fame
    –   Open Source @
        https://github.com/ansible/ansible/
    –   now supported by AnsibleWorks
●   Well documented
●   Growing, active and supportive
    community
    –
Enter Ansible
               Carlo Bonamico           JUG Genova / NIS s.r.l.



●   Minimal install
        sudo add-apt-repository ppa:rquillo/ansible
        ●


      ● sudo apt-get update


      ● sudo apt-get install ansible -y


●   Minimal requirements
    –   Python 2.6 on the commander
    –   Python 2.4 on the nodes
    –   Three phyton packages (autoinstall)
How does Ansible work?
              Carlo Bonamico           JUG Genova / NIS s.r.l.



●   Work on all Unix/Linuxes
    –   And Windows with cygwin (currently
        limited)
●   Transport over SSH
    –   (and other protocols in the future)
●   Inventory, configuration and playbooks in
    YAML
●   No DB is involved
Getting Started
                Carlo Bonamico     JUG Genova / NIS s.r.l.



●   SSH Key Pair
    –   ssh-keygen -b 2048
        enter pizzamatic_rsa as filename
        ●


●   Configure /etc/hosts or DNS
●   Configure ansible_hosts
    –   .ini format
    –   Hosts
    –   Groups, with []
Pizzamatic Time!
Carlo Bonamico     JUG Genova / NIS s.r.l.
Pizzamatic infrastructure
                Carlo Bonamico              JUG Genova / NIS s.r.l.



●   Front-end server with Apache2 and mod_proxy
●   Back-end application servers with Tomcat 7
●   Postgresql DB

●   Common features
    –   Ssh public key – passwordless login
    –   Ufw for firewall
First steps
             Carlo Bonamico      JUG Genova / NIS s.r.l.



●   ansible -k -m ping -u pizzamatic
    pizzamatic-fe-test-01
    –   -k means ask password
    –   -m means module (ping)
    –   -u connection user
    –   Target host
First steps
                Carlo Bonamico           JUG Genova / NIS s.r.l.



●   ssh-agent
●   ssh-add ~/.ssh/pizzamatic_rsa
●   ansible -k -m ping -u pizzamatic
    pizzamatic-fe-test-01
●   If it hangs, either
    –   You forgot the -k, and a certificate was not
        installed (or viceversa)
    –   You added the -K (sudo password), and
        passwordless sudo is enabled
Move to Playbooks
              Carlo Bonamico       JUG Genova / NIS s.r.l.



●   Efficient way of describing the desired
    configuration of multiple hosts
    –   And then “apply” it
    –   Incrementally
        Auto-resume
        ●


      ● Synchronization


      ● Versioning


●   ansible-playbook pizzamatic.playbook
BDD with Infrastructure???
             Carlo Bonamico               JUG Genova / NIS s.r.l.



●   First, descrive desired infrastructure
    status as plain text
    –   #pizzamatic service requires
        front-end
    –   #pizzamatic service requires
        application servers
●   Then translate it incrementally in
    ansible “actions” → execute it!
Actions: an example
                  Carlo Bonamico                       JUG Genova / NIS s.r.l.



#Installing and configuring Apache 2
  ­ name: Ensure Apache2 is installed
    action: apt pkg=apache2


  ­ name: Generate the virtual host configuration 
    action: template src=src/${service.name}­ssl.j2 
dest=/etc/apache2/sites­available


  ­ name: Ensure the site is up
    action: command a2ensite ${service.name}­ssl
  
  ­ action: service name=apache2 state=started
Ansible Actions
             Carlo Bonamico      JUG Genova / NIS s.r.l.



●   Not ideal term! Very often “actions”
    do nothing!
    –   Because the system is already in
        the desired state
        ●action: file dest=/home
         state=present
●   They do something only if the system
    is not in the desired state
Ansible Actions
             Carlo Bonamico      JUG Genova / NIS s.r.l.



●   Most Ansible Actions are Idempotent
    –   “big word” meaning that you can
        repeat them as many times as you
        want and always get the same
        result
●   In practice, it's what makes ansible
    useful
BDD with Infrastructure???
                Carlo Bonamico               JUG Genova / NIS s.r.l.



●   Red
    –   Error
●   Yellow
    –   Applied, changed
●   Green
    –   Already in the desired state
Infrastructure as what?
           Carlo Bonamico           JUG Genova / NIS s.r.l.




      Ansible = Infrastructure as Data

       You describe your infrastructure
         You version the description
  “Applying” the description and actually
ensuring that the infrastructure exists and is
 in the desired state is an implementation
      detail (and up to ansible, not you)
Ansible Modules
             Carlo Bonamico       JUG Genova / NIS s.r.l.



●   Clean and modular way of defining
    actions
    –   Encapsulate best practices
    –   A single ansible action encapsulates
        lines and lines of shell scripts
●   Very strong emphasis on reuse
Ansible Modules
              Carlo Bonamico    JUG Genova / NIS s.r.l.



●   Implemented in any language
    –   Python, java, bash...
    –   Core modules are in python
●   Input: parameter string
●   Output: json data
Ansible Modules
                     Carlo Bonamico                           JUG Genova / NIS s.r.l.


●   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          And many more!
●   group                              ●   user
●   hg                                 ●   virt
●   lineinfile                         ●   wait_for
●   mail                               ●   yum
Variables
                  Carlo Bonamico        JUG Genova / NIS s.r.l.



●   Declared
      –   In the ansible_hosts file
      –   individual YAML files relative to the
          inventory file
          ●   e.g. host_vars/pizzamatic-fe-test-01
---
ntp_server: acme.example.org
Facts
             Carlo Bonamico     JUG Genova / NIS s.r.l.



●   Automatically collected facts about
    systems involved in the playbook
    –   ${inventory_hostname}
    –   ${ansible_eth0.ipv4.address}
●   Can be use as variables in playbook
    and templates
Templates
              Carlo Bonamico       JUG Genova / NIS s.r.l.



●   Jinja2 templates
    –   very similar to java ${property}
        syntax
●   Env.sh.j2
    –   export JAVA_HOME=/home/$
        {service.user}/jdk1.7.0
    –   export PATH=$PATH:$JAVA_HOME/bin
Handlers
           Carlo Bonamico    JUG Genova / NIS s.r.l.



●   Respond to asynchronous events


  handlers:
  ­ name: restart ssh
    action: service name=ssh 
state=restarted
Playbooks
                       Carlo Bonamico                       JUG Genova / NIS s.r.l.


●
    Structure
    ---
  ­ hosts: pizzamatic­fe­test­01
  gather_facts: yes
  user: pizzamatic
  sudo: yes
  
  vars_files:
    ­ pizzamatic.yml
  
  vars:
    name: pizzamatic


  tasks:
  ­ include: pizzamatic­fe.playbook #child sees parent variables and params    
File management and transfer
                   Carlo Bonamico             JUG Genova / NIS s.r.l.



●   To the nodes
    –   ansible atlanta ­m copy ­a "src=/etc/hosts 
        dest=/tmp/hosts"
    –   ansible webservers ­m file ­a "dest=/srv/foo/b.txt 
        mode=600 owner=mdehaan group=mdehaan"
    –   ansible webservers ­m file ­a "dest=/path/to/c 
        mode=644 owner=mdehaan group=mdehaan state=directory"
    –   ansible webservers ­m file ­a "dest=/path/to/c 
        state=absent"
●   From the nodes
    –   Use the fetch module
Best Practices
                Carlo Bonamico       JUG Genova / NIS s.r.l.



●   Good old Software Engineering Principles
    still apply!
    –   Dont Repeat Yourself
    –   Good Names make the difference
    –   Be simple
    –   S.O.L.I.D.
        ●   http://butunclebob.com/ArticleS.Uncl
            eBob.PrinciplesOfOod
Useful Tools
             Carlo Bonamico      JUG Genova / NIS s.r.l.



●   Yaml Editor for Eclipse
    –   https://code.google.com/p/yedit/
    – https://code.google.com/p/yamledito
      r/
●   Git & Mercurial
References
                    Carlo Bonamico                JUG Genova / NIS s.r.l.

                                                       And
●   Ansible Home & Ansible Docs                   the very active
    –   http://www.ansible.cc                      google group
                                                  ansible-project
●   Extras
    –   http://www.ansible.cc/docs/contrib.html
●   Presentations
    –   https://speakerdeck.com/mpdehaan/ansible
●   AnsibleWorks
    –   http://www.ansibleworks.com/
●   This tutorial
    –   https://github.com/carlobonamico/ansible-tutorial
References
                 Carlo Bonamico             JUG Genova / NIS s.r.l.



●   My blog
    –   http://www.carlobonamico.com        Thank you
●   My Company
                                         for your attention!
    –   http://www.nispro.it
●   JUG Genova
    –   http://juggenova.net
●   Attend a course
    –   Infrastructure Management with Ansible (2 days)
    –   http://www.nispro.it/education

Más contenido relacionado

La actualidad más candente

Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet
 
Maven beyond hello_world
Maven beyond hello_worldMaven beyond hello_world
Maven beyond hello_worldGabriel Dogaru
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web applicationOliver N
 
#2 Hanoi Magento Meetup - Part 2: Knockout JS
#2 Hanoi Magento Meetup - Part 2: Knockout JS#2 Hanoi Magento Meetup - Part 2: Knockout JS
#2 Hanoi Magento Meetup - Part 2: Knockout JSHanoi MagentoMeetup
 
30 JavaScript optimization tips
30 JavaScript optimization tips30 JavaScript optimization tips
30 JavaScript optimization tipsHovhannes Avoyan
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosMicael Gallego
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development WorkflowVũ Nguyễn
 
The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015jbandi
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservicesLuram Archanjo
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentCarlos Perez
 
Drone Continuous Integration
Drone Continuous IntegrationDrone Continuous Integration
Drone Continuous IntegrationDaniel Cerecedo
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoFrank van der Linden
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChang W. Doh
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet
 
SnapyX
SnapyXSnapyX
SnapyXekino
 
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...Bootstrapping a simple enterprise application with Java EE successor, Jakarta...
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...Buhake Sindi
 

La actualidad más candente (20)

Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
 
Maven beyond hello_world
Maven beyond hello_worldMaven beyond hello_world
Maven beyond hello_world
 
Isomorphic web application
Isomorphic web applicationIsomorphic web application
Isomorphic web application
 
#2 Hanoi Magento Meetup - Part 2: Knockout JS
#2 Hanoi Magento Meetup - Part 2: Knockout JS#2 Hanoi Magento Meetup - Part 2: Knockout JS
#2 Hanoi Magento Meetup - Part 2: Knockout JS
 
30 JavaScript optimization tips
30 JavaScript optimization tips30 JavaScript optimization tips
30 JavaScript optimization tips
 
Testing fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornosTesting fácil con Docker: Gestiona dependencias y unifica entornos
Testing fácil con Docker: Gestiona dependencias y unifica entornos
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development Workflow
 
Node js
Node jsNode js
Node js
 
The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015The curious Life of JavaScript - Talk at SI-SE 2015
The curious Life of JavaScript - Talk at SI-SE 2015
 
Micronaut: A new way to build microservices
Micronaut: A new way to build microservicesMicronaut: A new way to build microservices
Micronaut: A new way to build microservices
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software Development
 
Drone Continuous Integration
Drone Continuous IntegrationDrone Continuous Integration
Drone Continuous Integration
 
An XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on DominoAn XPager's Guide to Process Server-Side Jobs on Domino
An XPager's Guide to Process Server-Side Jobs on Domino
 
Chromium: NaCl and Pepper API
Chromium: NaCl and Pepper APIChromium: NaCl and Pepper API
Chromium: NaCl and Pepper API
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
 
Nodejs
NodejsNodejs
Nodejs
 
SnapyX
SnapyXSnapyX
SnapyX
 
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...Bootstrapping a simple enterprise application with Java EE successor, Jakarta...
Bootstrapping a simple enterprise application with Java EE successor, Jakarta...
 
React Django Presentation
React Django PresentationReact Django Presentation
React Django Presentation
 

Destacado

Su 37 Park Jet Plans (Parts Templates 28 In Span)
Su 37 Park Jet Plans (Parts Templates  28 In Span)Su 37 Park Jet Plans (Parts Templates  28 In Span)
Su 37 Park Jet Plans (Parts Templates 28 In Span)guestb64bf3
 
Direccionamiento IP
Direccionamiento IPDireccionamiento IP
Direccionamiento IPgiovanni329
 
Museu paula calafare-b4
Museu   paula calafare-b4Museu   paula calafare-b4
Museu paula calafare-b4eb1penha4
 
Sydney Film Base Weekend MasterClass 'online distribution' by Nick Bolton
Sydney Film Base Weekend MasterClass 'online distribution' by Nick BoltonSydney Film Base Weekend MasterClass 'online distribution' by Nick Bolton
Sydney Film Base Weekend MasterClass 'online distribution' by Nick BoltonTen Alphas
 
Michael Speltz Defining Critical Factors in Executive Coaching
Michael Speltz Defining Critical Factors in Executive CoachingMichael Speltz Defining Critical Factors in Executive Coaching
Michael Speltz Defining Critical Factors in Executive CoachingMichael Speltz
 
Etude de Rémunérations Accueil & Services 2013-2014
Etude de Rémunérations Accueil & Services 2013-2014Etude de Rémunérations Accueil & Services 2013-2014
Etude de Rémunérations Accueil & Services 2013-2014Page Personnel
 
PLUS ULTRA: DEL PUERTO DE PALOS A BUENOS AIRES-Enrique F. Widmann-Miguel-4ta....
PLUS ULTRA: DEL PUERTO DE PALOS A BUENOS AIRES-Enrique F. Widmann-Miguel-4ta....PLUS ULTRA: DEL PUERTO DE PALOS A BUENOS AIRES-Enrique F. Widmann-Miguel-4ta....
PLUS ULTRA: DEL PUERTO DE PALOS A BUENOS AIRES-Enrique F. Widmann-Miguel-4ta....Carlos Cueto
 
Correo neumático Guadalajara. Tips para disminuir el stress empresarial
Correo neumático Guadalajara. Tips para disminuir el stress empresarialCorreo neumático Guadalajara. Tips para disminuir el stress empresarial
Correo neumático Guadalajara. Tips para disminuir el stress empresarialPaola Lara
 
Revista Candidatura PSOE Alcázar 2011
Revista Candidatura PSOE Alcázar 2011Revista Candidatura PSOE Alcázar 2011
Revista Candidatura PSOE Alcázar 2011psoealcazar
 
Instrucciones para los obreros
Instrucciones para los obrerosInstrucciones para los obreros
Instrucciones para los obrerosCoke Neto
 
June 2013 clif program and services advertisments
June 2013 clif program and services advertismentsJune 2013 clif program and services advertisments
June 2013 clif program and services advertismentshhbn10thmtn
 
iCubio catlog-july 2015
iCubio catlog-july 2015iCubio catlog-july 2015
iCubio catlog-july 2015Amanda Guo
 
DEMO_Redfaire AP Automation SHORT
DEMO_Redfaire AP Automation SHORTDEMO_Redfaire AP Automation SHORT
DEMO_Redfaire AP Automation SHORTStuart McDonnell
 
Balanza de pagos: Enfoque Monetario
Balanza de pagos: Enfoque MonetarioBalanza de pagos: Enfoque Monetario
Balanza de pagos: Enfoque MonetarioLenin Torres Acosta
 
1Gender and Land Use and Soil Management Projects
1Gender and Land Use and Soil Management Projects1Gender and Land Use and Soil Management Projects
1Gender and Land Use and Soil Management ProjectsNancy Drost
 
Libro elementos examenes_educac_basica
Libro elementos examenes_educac_basicaLibro elementos examenes_educac_basica
Libro elementos examenes_educac_basicaInstituto Cife
 

Destacado (20)

Su 37 Park Jet Plans (Parts Templates 28 In Span)
Su 37 Park Jet Plans (Parts Templates  28 In Span)Su 37 Park Jet Plans (Parts Templates  28 In Span)
Su 37 Park Jet Plans (Parts Templates 28 In Span)
 
Direccionamiento IP
Direccionamiento IPDireccionamiento IP
Direccionamiento IP
 
Museu paula calafare-b4
Museu   paula calafare-b4Museu   paula calafare-b4
Museu paula calafare-b4
 
Sydney Film Base Weekend MasterClass 'online distribution' by Nick Bolton
Sydney Film Base Weekend MasterClass 'online distribution' by Nick BoltonSydney Film Base Weekend MasterClass 'online distribution' by Nick Bolton
Sydney Film Base Weekend MasterClass 'online distribution' by Nick Bolton
 
Un país en transición. mundo rural
Un país en transición. mundo ruralUn país en transición. mundo rural
Un país en transición. mundo rural
 
Web 0.2
Web 0.2Web 0.2
Web 0.2
 
Michael Speltz Defining Critical Factors in Executive Coaching
Michael Speltz Defining Critical Factors in Executive CoachingMichael Speltz Defining Critical Factors in Executive Coaching
Michael Speltz Defining Critical Factors in Executive Coaching
 
Etude de Rémunérations Accueil & Services 2013-2014
Etude de Rémunérations Accueil & Services 2013-2014Etude de Rémunérations Accueil & Services 2013-2014
Etude de Rémunérations Accueil & Services 2013-2014
 
PLUS ULTRA: DEL PUERTO DE PALOS A BUENOS AIRES-Enrique F. Widmann-Miguel-4ta....
PLUS ULTRA: DEL PUERTO DE PALOS A BUENOS AIRES-Enrique F. Widmann-Miguel-4ta....PLUS ULTRA: DEL PUERTO DE PALOS A BUENOS AIRES-Enrique F. Widmann-Miguel-4ta....
PLUS ULTRA: DEL PUERTO DE PALOS A BUENOS AIRES-Enrique F. Widmann-Miguel-4ta....
 
Ksmith 7 2 07
Ksmith 7 2 07Ksmith 7 2 07
Ksmith 7 2 07
 
Correo neumático Guadalajara. Tips para disminuir el stress empresarial
Correo neumático Guadalajara. Tips para disminuir el stress empresarialCorreo neumático Guadalajara. Tips para disminuir el stress empresarial
Correo neumático Guadalajara. Tips para disminuir el stress empresarial
 
Revista Candidatura PSOE Alcázar 2011
Revista Candidatura PSOE Alcázar 2011Revista Candidatura PSOE Alcázar 2011
Revista Candidatura PSOE Alcázar 2011
 
Instrucciones para los obreros
Instrucciones para los obrerosInstrucciones para los obreros
Instrucciones para los obreros
 
June 2013 clif program and services advertisments
June 2013 clif program and services advertismentsJune 2013 clif program and services advertisments
June 2013 clif program and services advertisments
 
iCubio catlog-july 2015
iCubio catlog-july 2015iCubio catlog-july 2015
iCubio catlog-july 2015
 
DEMO_Redfaire AP Automation SHORT
DEMO_Redfaire AP Automation SHORTDEMO_Redfaire AP Automation SHORT
DEMO_Redfaire AP Automation SHORT
 
Balanza de pagos: Enfoque Monetario
Balanza de pagos: Enfoque MonetarioBalanza de pagos: Enfoque Monetario
Balanza de pagos: Enfoque Monetario
 
1Gender and Land Use and Soil Management Projects
1Gender and Land Use and Soil Management Projects1Gender and Land Use and Soil Management Projects
1Gender and Land Use and Soil Management Projects
 
Ibiza
IbizaIbiza
Ibiza
 
Libro elementos examenes_educac_basica
Libro elementos examenes_educac_basicaLibro elementos examenes_educac_basica
Libro elementos examenes_educac_basica
 

Similar a Infrastructure as Data with Ansible

Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014vespian_256
 
PLNOG Automation@Brainly
PLNOG Automation@BrainlyPLNOG Automation@Brainly
PLNOG Automation@Brainlyvespian_256
 
PLNOG14: Automation at Brainly - Paweł Rozlach
PLNOG14: Automation at Brainly - Paweł RozlachPLNOG14: Automation at Brainly - Paweł Rozlach
PLNOG14: Automation at Brainly - Paweł RozlachPROIDEA
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsGR8Conf
 
OSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas EricssonOSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas EricssonNETWAYS
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with PuppetKris Buytaert
 
One Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesOne Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesLeszek Godlewski
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012Philip Polstra
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as CodeKris Buytaert
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with DjangoRoger Barnes
 
Perfect Linux Desktop - OpenSuSE 12.2
Perfect Linux Desktop - OpenSuSE 12.2Perfect Linux Desktop - OpenSuSE 12.2
Perfect Linux Desktop - OpenSuSE 12.2Davor Guttierrez
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftYaniv cohen
 
Deploying Perl apps on dotCloud
Deploying Perl apps on dotCloudDeploying Perl apps on dotCloud
Deploying Perl apps on dotClouddaoswald
 
A3Sec Advanced Deployment System
A3Sec Advanced Deployment SystemA3Sec Advanced Deployment System
A3Sec Advanced Deployment Systema3sec
 
Nagios Conference 2014 - Andy Brist - Nagios XI Failover and HA Solutions
Nagios Conference 2014 - Andy Brist - Nagios XI Failover and HA SolutionsNagios Conference 2014 - Andy Brist - Nagios XI Failover and HA Solutions
Nagios Conference 2014 - Andy Brist - Nagios XI Failover and HA SolutionsNagios
 
Hacking and Forensics on the Go - 44CON 2012
Hacking and Forensics on the Go - 44CON 2012Hacking and Forensics on the Go - 44CON 2012
Hacking and Forensics on the Go - 44CON 201244CON
 

Similar a Infrastructure as Data with Ansible (20)

Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014
 
PLNOG Automation@Brainly
PLNOG Automation@BrainlyPLNOG Automation@Brainly
PLNOG Automation@Brainly
 
PLNOG14: Automation at Brainly - Paweł Rozlach
PLNOG14: Automation at Brainly - Paweł RozlachPLNOG14: Automation at Brainly - Paweł Rozlach
PLNOG14: Automation at Brainly - Paweł Rozlach
 
My "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails ProjectsMy "Perfect" Toolchain Setup for Grails Projects
My "Perfect" Toolchain Setup for Grails Projects
 
OSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas EricssonOSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
OSMC 2014: Naemon 1, 2, 3, N | Andreas Ericsson
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
 
One Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launchesOne Year of Porting - Post-mortem of two Linux/SteamOS launches
One Year of Porting - Post-mortem of two Linux/SteamOS launches
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
 
Pdf c1t tlawaxb
Pdf c1t tlawaxbPdf c1t tlawaxb
Pdf c1t tlawaxb
 
Beyond Puppet
Beyond PuppetBeyond Puppet
Beyond Puppet
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with Django
 
Perfect Linux Desktop - OpenSuSE 12.2
Perfect Linux Desktop - OpenSuSE 12.2Perfect Linux Desktop - OpenSuSE 12.2
Perfect Linux Desktop - OpenSuSE 12.2
 
Devops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShiftDevops with Python by Yaniv Cohen DevopShift
Devops with Python by Yaniv Cohen DevopShift
 
Deploying Perl apps on dotCloud
Deploying Perl apps on dotCloudDeploying Perl apps on dotCloud
Deploying Perl apps on dotCloud
 
A3Sec Advanced Deployment System
A3Sec Advanced Deployment SystemA3Sec Advanced Deployment System
A3Sec Advanced Deployment System
 
Nagios Conference 2014 - Andy Brist - Nagios XI Failover and HA Solutions
Nagios Conference 2014 - Andy Brist - Nagios XI Failover and HA SolutionsNagios Conference 2014 - Andy Brist - Nagios XI Failover and HA Solutions
Nagios Conference 2014 - Andy Brist - Nagios XI Failover and HA Solutions
 
Polstra 44con2012
Polstra 44con2012Polstra 44con2012
Polstra 44con2012
 
Hacking and Forensics on the Go - 44CON 2012
Hacking and Forensics on the Go - 44CON 2012Hacking and Forensics on the Go - 44CON 2012
Hacking and Forensics on the Go - 44CON 2012
 

Más de Carlo Bonamico

Build Your Own Angular Component Library
Build Your Own Angular Component LibraryBuild Your Own Angular Component Library
Build Your Own Angular Component LibraryCarlo Bonamico
 
Angular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereAngular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereCarlo Bonamico
 
Continuous Security: Zap security bugs now Codemotion-2015
Continuous Security: Zap security bugs now Codemotion-2015Continuous Security: Zap security bugs now Codemotion-2015
Continuous Security: Zap security bugs now Codemotion-2015Carlo Bonamico
 
AngularJS Security: defend your Single Page Application
AngularJS Security: defend your Single Page Application AngularJS Security: defend your Single Page Application
AngularJS Security: defend your Single Page Application Carlo Bonamico
 
Web Application Security Reloaded for the HTML5 era
Web Application Security Reloaded for the HTML5 eraWeb Application Security Reloaded for the HTML5 era
Web Application Security Reloaded for the HTML5 eraCarlo Bonamico
 
Angular 1.x reloaded: improve your app now! and get ready for 2.0
Angular 1.x reloaded:  improve your app now! and get ready for 2.0Angular 1.x reloaded:  improve your app now! and get ready for 2.0
Angular 1.x reloaded: improve your app now! and get ready for 2.0Carlo Bonamico
 
Real World AngularJS recipes: beyond TodoMVC
Real World AngularJS recipes: beyond TodoMVCReal World AngularJS recipes: beyond TodoMVC
Real World AngularJS recipes: beyond TodoMVCCarlo Bonamico
 
Mobile HTML5 websites and Hybrid Apps with AngularJS
Mobile HTML5 websites and Hybrid Apps with AngularJSMobile HTML5 websites and Hybrid Apps with AngularJS
Mobile HTML5 websites and Hybrid Apps with AngularJSCarlo Bonamico
 
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013Carlo Bonamico
 
Infrastructure as Data with Ansible for easier Continuous Delivery
Infrastructure as Data with Ansible for easier Continuous DeliveryInfrastructure as Data with Ansible for easier Continuous Delivery
Infrastructure as Data with Ansible for easier Continuous DeliveryCarlo Bonamico
 
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...Carlo Bonamico
 
Maven 2 in the real world
Maven 2 in the real worldMaven 2 in the real world
Maven 2 in the real worldCarlo Bonamico
 
Nasa World Wind For Java (by Fabrizio Giudici)
Nasa World Wind For Java (by Fabrizio Giudici)Nasa World Wind For Java (by Fabrizio Giudici)
Nasa World Wind For Java (by Fabrizio Giudici)Carlo Bonamico
 
Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Carlo Bonamico
 

Más de Carlo Bonamico (15)

Build Your Own Angular Component Library
Build Your Own Angular Component LibraryBuild Your Own Angular Component Library
Build Your Own Angular Component Library
 
Angular Rebooted: Components Everywhere
Angular Rebooted: Components EverywhereAngular Rebooted: Components Everywhere
Angular Rebooted: Components Everywhere
 
Continuous Security: Zap security bugs now Codemotion-2015
Continuous Security: Zap security bugs now Codemotion-2015Continuous Security: Zap security bugs now Codemotion-2015
Continuous Security: Zap security bugs now Codemotion-2015
 
AngularJS Security: defend your Single Page Application
AngularJS Security: defend your Single Page Application AngularJS Security: defend your Single Page Application
AngularJS Security: defend your Single Page Application
 
Web Application Security Reloaded for the HTML5 era
Web Application Security Reloaded for the HTML5 eraWeb Application Security Reloaded for the HTML5 era
Web Application Security Reloaded for the HTML5 era
 
Angular 1.x reloaded: improve your app now! and get ready for 2.0
Angular 1.x reloaded:  improve your app now! and get ready for 2.0Angular 1.x reloaded:  improve your app now! and get ready for 2.0
Angular 1.x reloaded: improve your app now! and get ready for 2.0
 
Real World AngularJS recipes: beyond TodoMVC
Real World AngularJS recipes: beyond TodoMVCReal World AngularJS recipes: beyond TodoMVC
Real World AngularJS recipes: beyond TodoMVC
 
Mobile HTML5 websites and Hybrid Apps with AngularJS
Mobile HTML5 websites and Hybrid Apps with AngularJSMobile HTML5 websites and Hybrid Apps with AngularJS
Mobile HTML5 websites and Hybrid Apps with AngularJS
 
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
AngularJS: How to code today with tomorrow tools - Codemotion Milan 2013
 
Infrastructure as Data with Ansible for easier Continuous Delivery
Infrastructure as Data with Ansible for easier Continuous DeliveryInfrastructure as Data with Ansible for easier Continuous Delivery
Infrastructure as Data with Ansible for easier Continuous Delivery
 
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
Is my Web Application secure? OWASP Top Ten Security Risks and Beyond...
 
Maven 2 in the real world
Maven 2 in the real worldMaven 2 in the real world
Maven 2 in the real world
 
Nasa World Wind For Java (by Fabrizio Giudici)
Nasa World Wind For Java (by Fabrizio Giudici)Nasa World Wind For Java (by Fabrizio Giudici)
Nasa World Wind For Java (by Fabrizio Giudici)
 
Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)Continuous Integration With Hudson (and Jenkins)
Continuous Integration With Hudson (and Jenkins)
 
Build Automation Tips
Build Automation TipsBuild Automation Tips
Build Automation Tips
 

Último

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 

Último (20)

"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 

Infrastructure as Data with Ansible

  • 1. Cloudy Infrastructure as data with Ansible: systems / cloud deployment and management for the lazy developer Carlo Bonamico - carlo.bonamico@nispro.it NIS s.r.l. / JUG Genova http://www.nispro.it / http://juggenova.net
  • 2. What is this all about? Carlo Bonamico JUG Genova / NIS s.r.l. ● Do you like – Staying up late to reconfigure a server that went out of sync? – Being unable to deploy a critical fix because the upgrade process is so fragile and long that “it is better not to touch the system”? – Having to rely on a server that took a week to setup, and lose it because of an HD failure? – Be unable to quickly scale your application on multiple servers because the IT administration becomes too complex and time-consuming?
  • 3. Ansible Hello World Carlo Bonamico JUG Genova / NIS s.r.l. If the answer to these question is NO! Then this talk is for you!
  • 4. What do we want? Carlo Bonamico JUG Genova / NIS s.r.l. ● An easy way of quickly installing and configuring new and existing servers ● A way of “syncing” the configuration to a baseline when it drifts ● A way of recreating a machine as many times as you need – Reliably and with no effort ● A way of managing complex deployments – And orchestrating interconnected services
  • 5. What do we want? Carlo Bonamico JUG Genova / NIS s.r.l. ● A way of doing all of those things – EASILY – QUICKLY – RELIABLY ● Doing things automatically – Ideally with no additional effort vs doing things manually (and with less mistakes!)
  • 6. An Agile Approach Carlo Bonamico JUG Genova / NIS s.r.l. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. Simplicity --the art of maximizing the amount of work not done-- is essential. The Agile Manifesto
  • 7. Enter Ansible Carlo Bonamico JUG Genova / NIS s.r.l. ● Ansible is your friend! – A tool for doing things automatically ●With LESS effort than doing them manually ● It provides – Remote command execution across multiple machines – File, package and configuration distribution – Automated installations and deployments
  • 8. What's inside? Carlo Bonamico JUG Genova / NIS s.r.l.
  • 9. Enter Ansible Carlo Bonamico JUG Genova / NIS s.r.l. ● Created by Michael De Haan of Cobbler fame – Open Source @ https://github.com/ansible/ansible/ – now supported by AnsibleWorks ● Well documented ● Growing, active and supportive community –
  • 10. Enter Ansible Carlo Bonamico JUG Genova / NIS s.r.l. ● Minimal install sudo add-apt-repository ppa:rquillo/ansible ● ● sudo apt-get update ● sudo apt-get install ansible -y ● Minimal requirements – Python 2.6 on the commander – Python 2.4 on the nodes – Three phyton packages (autoinstall)
  • 11. How does Ansible work? Carlo Bonamico JUG Genova / NIS s.r.l. ● Work on all Unix/Linuxes – And Windows with cygwin (currently limited) ● Transport over SSH – (and other protocols in the future) ● Inventory, configuration and playbooks in YAML ● No DB is involved
  • 12. Getting Started Carlo Bonamico JUG Genova / NIS s.r.l. ● SSH Key Pair – ssh-keygen -b 2048 enter pizzamatic_rsa as filename ● ● Configure /etc/hosts or DNS ● Configure ansible_hosts – .ini format – Hosts – Groups, with []
  • 13. Pizzamatic Time! Carlo Bonamico JUG Genova / NIS s.r.l.
  • 14. Pizzamatic infrastructure Carlo Bonamico JUG Genova / NIS s.r.l. ● Front-end server with Apache2 and mod_proxy ● Back-end application servers with Tomcat 7 ● Postgresql DB ● Common features – Ssh public key – passwordless login – Ufw for firewall
  • 15. First steps Carlo Bonamico JUG Genova / NIS s.r.l. ● ansible -k -m ping -u pizzamatic pizzamatic-fe-test-01 – -k means ask password – -m means module (ping) – -u connection user – Target host
  • 16. First steps Carlo Bonamico JUG Genova / NIS s.r.l. ● ssh-agent ● ssh-add ~/.ssh/pizzamatic_rsa ● ansible -k -m ping -u pizzamatic pizzamatic-fe-test-01 ● If it hangs, either – You forgot the -k, and a certificate was not installed (or viceversa) – You added the -K (sudo password), and passwordless sudo is enabled
  • 17. Move to Playbooks Carlo Bonamico JUG Genova / NIS s.r.l. ● Efficient way of describing the desired configuration of multiple hosts – And then “apply” it – Incrementally Auto-resume ● ● Synchronization ● Versioning ● ansible-playbook pizzamatic.playbook
  • 18. BDD with Infrastructure??? Carlo Bonamico JUG Genova / NIS s.r.l. ● First, descrive desired infrastructure status as plain text – #pizzamatic service requires front-end – #pizzamatic service requires application servers ● Then translate it incrementally in ansible “actions” → execute it!
  • 19. Actions: an example Carlo Bonamico JUG Genova / NIS s.r.l. #Installing and configuring Apache 2   ­ name: Ensure Apache2 is installed     action: apt pkg=apache2   ­ name: Generate the virtual host configuration      action: template src=src/${service.name}­ssl.j2  dest=/etc/apache2/sites­available   ­ name: Ensure the site is up     action: command a2ensite ${service.name}­ssl      ­ action: service name=apache2 state=started
  • 20. Ansible Actions Carlo Bonamico JUG Genova / NIS s.r.l. ● Not ideal term! Very often “actions” do nothing! – Because the system is already in the desired state ●action: file dest=/home state=present ● They do something only if the system is not in the desired state
  • 21. Ansible Actions Carlo Bonamico JUG Genova / NIS s.r.l. ● Most Ansible Actions are Idempotent – “big word” meaning that you can repeat them as many times as you want and always get the same result ● In practice, it's what makes ansible useful
  • 22. BDD with Infrastructure??? Carlo Bonamico JUG Genova / NIS s.r.l. ● Red – Error ● Yellow – Applied, changed ● Green – Already in the desired state
  • 23. Infrastructure as what? Carlo Bonamico JUG Genova / NIS s.r.l. Ansible = Infrastructure as Data You describe your infrastructure You version the description “Applying” the description and actually ensuring that the infrastructure exists and is in the desired state is an implementation detail (and up to ansible, not you)
  • 24. Ansible Modules Carlo Bonamico JUG Genova / NIS s.r.l. ● Clean and modular way of defining actions – Encapsulate best practices – A single ansible action encapsulates lines and lines of shell scripts ● Very strong emphasis on reuse
  • 25. Ansible Modules Carlo Bonamico JUG Genova / NIS s.r.l. ● Implemented in any language – Python, java, bash... – Core modules are in python ● Input: parameter string ● Output: json data
  • 26. Ansible Modules Carlo Bonamico JUG Genova / NIS s.r.l. ● 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 And many more! ● group ● user ● hg ● virt ● lineinfile ● wait_for ● mail ● yum
  • 27. Variables Carlo Bonamico JUG Genova / NIS s.r.l. ● Declared – In the ansible_hosts file – individual YAML files relative to the inventory file ● e.g. host_vars/pizzamatic-fe-test-01 --- ntp_server: acme.example.org
  • 28. Facts Carlo Bonamico JUG Genova / NIS s.r.l. ● Automatically collected facts about systems involved in the playbook – ${inventory_hostname} – ${ansible_eth0.ipv4.address} ● Can be use as variables in playbook and templates
  • 29. Templates Carlo Bonamico JUG Genova / NIS s.r.l. ● Jinja2 templates – very similar to java ${property} syntax ● Env.sh.j2 – export JAVA_HOME=/home/$ {service.user}/jdk1.7.0 – export PATH=$PATH:$JAVA_HOME/bin
  • 30. Handlers Carlo Bonamico JUG Genova / NIS s.r.l. ● Respond to asynchronous events   handlers:   ­ name: restart ssh     action: service name=ssh  state=restarted
  • 31. Playbooks Carlo Bonamico JUG Genova / NIS s.r.l. ● Structure ---   ­ hosts: pizzamatic­fe­test­01   gather_facts: yes   user: pizzamatic   sudo: yes      vars_files:     ­ pizzamatic.yml      vars:     name: pizzamatic   tasks:   ­ include: pizzamatic­fe.playbook #child sees parent variables and params    
  • 32. File management and transfer Carlo Bonamico JUG Genova / NIS s.r.l. ● To the nodes – ansible atlanta ­m copy ­a "src=/etc/hosts  dest=/tmp/hosts" – ansible webservers ­m file ­a "dest=/srv/foo/b.txt  mode=600 owner=mdehaan group=mdehaan" – ansible webservers ­m file ­a "dest=/path/to/c  mode=644 owner=mdehaan group=mdehaan state=directory" – ansible webservers ­m file ­a "dest=/path/to/c  state=absent" ● From the nodes – Use the fetch module
  • 33. Best Practices Carlo Bonamico JUG Genova / NIS s.r.l. ● Good old Software Engineering Principles still apply! – Dont Repeat Yourself – Good Names make the difference – Be simple – S.O.L.I.D. ● http://butunclebob.com/ArticleS.Uncl eBob.PrinciplesOfOod
  • 34. Useful Tools Carlo Bonamico JUG Genova / NIS s.r.l. ● Yaml Editor for Eclipse – https://code.google.com/p/yedit/ – https://code.google.com/p/yamledito r/ ● Git & Mercurial
  • 35. References Carlo Bonamico JUG Genova / NIS s.r.l. And ● Ansible Home & Ansible Docs the very active – http://www.ansible.cc google group ansible-project ● Extras – http://www.ansible.cc/docs/contrib.html ● Presentations – https://speakerdeck.com/mpdehaan/ansible ● AnsibleWorks – http://www.ansibleworks.com/ ● This tutorial – https://github.com/carlobonamico/ansible-tutorial
  • 36. References Carlo Bonamico JUG Genova / NIS s.r.l. ● My blog – http://www.carlobonamico.com Thank you ● My Company for your attention! – http://www.nispro.it ● JUG Genova – http://juggenova.net ● Attend a course – Infrastructure Management with Ansible (2 days) – http://www.nispro.it/education