SlideShare a Scribd company logo
●
    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

More Related Content

What's hot

Intro to vagrant
Intro to vagrantIntro to vagrant
Intro to vagrant
Mantas Klasavicius
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
Piotr Pelczar
 
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
Carlos Perez
 
Docker in development (Story)
Docker in development (Story)Docker in development (Story)
Docker in development (Story)
Quan Nguyen
 
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
Pablo Godel
 
How To Set a Vagrant Development System
How To Set a Vagrant Development SystemHow To Set a Vagrant Development System
How To Set a Vagrant Development System
Paul Bearne
 
[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive
Akihiro Suda
 
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam RuzickaOSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
NETWAYS
 
Functional MCU programming
Functional MCU programmingFunctional MCU programming
Functional MCU programming
Kiwamu Okabe
 
Taming AEM deployments
Taming AEM deploymentsTaming AEM deployments
Taming AEM deployments
Jakub Wadolowski
 
Killer R10K Workflow - PuppetConf 2014
Killer R10K Workflow - PuppetConf 2014Killer R10K Workflow - PuppetConf 2014
Killer R10K Workflow - PuppetConf 2014
Puppet
 
Test-Driven Infrastructure with Chef
Test-Driven Infrastructure with ChefTest-Driven Infrastructure with Chef
Test-Driven Infrastructure with Chef
Michael Lihs
 
Getting Started with Node.js
Getting Started with Node.jsGetting Started with Node.js
Getting Started with Node.js
Justin Reock
 
Gearman work queue in php
Gearman work queue in phpGearman work queue in php
Gearman work queue in php
Bo-Yi Wu
 
It gilde 20150209
It gilde 20150209It gilde 20150209
It gilde 20150209
Martin Simons
 
Using Qt under LGPLv3
Using Qt under LGPLv3Using Qt under LGPLv3
Using Qt under LGPLv3
Burkhard Stubert
 
ATDD with Behat and Selenium (LDNSE6)
ATDD with Behat and Selenium (LDNSE6)ATDD with Behat and Selenium (LDNSE6)
ATDD with Behat and Selenium (LDNSE6)
Shashikant Jagtap
 
Zend Expressive in 15 Minutes
Zend Expressive in 15 MinutesZend Expressive in 15 Minutes
Zend Expressive in 15 Minutes
Chris Tankersley
 
Vagrant + Docker
Vagrant + DockerVagrant + Docker
Vagrant + Docker
David Giordano
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
php-user-group-minsk
 

What's hot (20)

Intro to vagrant
Intro to vagrantIntro to vagrant
Intro to vagrant
 
Pragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecturePragmatic Monolith-First, easy to decompose, clean architecture
Pragmatic Monolith-First, easy to decompose, clean architecture
 
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
 
Docker in development (Story)
Docker in development (Story)Docker in development (Story)
Docker in development (Story)
 
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
PHP Conference Argentina 2013 - Independizate de tu departamento IT - Habilid...
 
How To Set a Vagrant Development System
How To Set a Vagrant Development SystemHow To Set a Vagrant Development System
How To Set a Vagrant Development System
 
[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive[KubeCon EU 2020] containerd Deep Dive
[KubeCon EU 2020] containerd Deep Dive
 
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam RuzickaOSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
OSCamp 2019 | #3 Ansible: Foreman Discovery by Adam Ruzicka
 
Functional MCU programming
Functional MCU programmingFunctional MCU programming
Functional MCU programming
 
Taming AEM deployments
Taming AEM deploymentsTaming AEM deployments
Taming AEM deployments
 
Killer R10K Workflow - PuppetConf 2014
Killer R10K Workflow - PuppetConf 2014Killer R10K Workflow - PuppetConf 2014
Killer R10K Workflow - PuppetConf 2014
 
Test-Driven Infrastructure with Chef
Test-Driven Infrastructure with ChefTest-Driven Infrastructure with Chef
Test-Driven Infrastructure with Chef
 
Getting Started with Node.js
Getting Started with Node.jsGetting Started with Node.js
Getting Started with Node.js
 
Gearman work queue in php
Gearman work queue in phpGearman work queue in php
Gearman work queue in php
 
It gilde 20150209
It gilde 20150209It gilde 20150209
It gilde 20150209
 
Using Qt under LGPLv3
Using Qt under LGPLv3Using Qt under LGPLv3
Using Qt under LGPLv3
 
ATDD with Behat and Selenium (LDNSE6)
ATDD with Behat and Selenium (LDNSE6)ATDD with Behat and Selenium (LDNSE6)
ATDD with Behat and Selenium (LDNSE6)
 
Zend Expressive in 15 Minutes
Zend Expressive in 15 MinutesZend Expressive in 15 Minutes
Zend Expressive in 15 Minutes
 
Vagrant + Docker
Vagrant + DockerVagrant + Docker
Vagrant + Docker
 
Symfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim RomanovskySymfony Under Control by Maxim Romanovsky
Symfony Under Control by Maxim Romanovsky
 

Similar to Infrastructure as data with Ansible: systems and cloud deployment and management for the lazy developer by Carlo Bonamico

Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014Automation@Brainly - Polish Linux Autumn 2014
Automation@Brainly - Polish Linux Autumn 2014
vespian_256
 
PLNOG Automation@Brainly
PLNOG Automation@BrainlyPLNOG Automation@Brainly
PLNOG Automation@Brainly
vespian_256
 
PLNOG14: Automation at Brainly - Paweł Rozlach
PLNOG14: Automation at Brainly - Paweł RozlachPLNOG14: Automation at Brainly - Paweł Rozlach
PLNOG14: Automation at Brainly - Paweł Rozlach
PROIDEA
 
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
GR8Conf
 
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
NETWAYS
 
Automating MySQL operations with Puppet
Automating MySQL operations with PuppetAutomating MySQL operations with Puppet
Automating MySQL operations with Puppet
Kris 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 launches
Leszek Godlewski
 
The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012The Deck by Phil Polstra GrrCON2012
The Deck by Phil Polstra GrrCON2012
Philip Polstra
 
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
Stanislav Pogrebnyak
 
Pdf c1t tlawaxb
Pdf c1t tlawaxbPdf c1t tlawaxb
Pdf c1t tlawaxb
Susant Sahani
 
Repositories as Code
Repositories as CodeRepositories as Code
Repositories as Code
Kris Buytaert
 
Towards Continuous Deployment with Django
Towards Continuous Deployment with DjangoTowards Continuous Deployment with Django
Towards Continuous Deployment with Django
Roger 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 DevopShift
Yaniv cohen
 
Deploying Perl apps on dotCloud
Deploying Perl apps on dotCloudDeploying Perl apps on dotCloud
Deploying Perl apps on dotCloud
daoswald
 
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 Solutions
Nagios
 
Polstra 44con2012
Polstra 44con2012Polstra 44con2012
Polstra 44con2012
Philip Polstra
 
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
44CON
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
Robert Lujo
 

Similar to Infrastructure as data with Ansible: systems and cloud deployment and management for the lazy developer by Carlo Bonamico (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
 
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
 
Django dev-env-my-way
Django dev-env-my-wayDjango dev-env-my-way
Django dev-env-my-way
 

More from Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
Codemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
Codemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
Codemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Codemotion
 

More from Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Recently uploaded

PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Zilliz
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 

Recently uploaded (20)

PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...Building RAG with self-deployed Milvus vector database and Snowpark Container...
Building RAG with self-deployed Milvus vector database and Snowpark Container...
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 

Infrastructure as data with Ansible: systems and cloud deployment and management for the lazy developer by Carlo Bonamico

  • 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