http://shipitsquirrel.github.com/

Monday, 30 April 12
DevOps
                                   &
                            Infrastructure
                               As Code
                      Gavin Heavyside - ACCU 2012 - 27 April 2012
                        gavin@heavyside.co.uk @gavinheavyside
Monday, 30 April 12
Getting Software
                           Into Production

                      • Deliver value to customers
                      • New features
                      • Bug fixes


Monday, 30 April 12
Software Releases

                      • QA cycle
                      • Downtime during deploy
                      • Out-of-hours
                      • Stress
                      • Risk

Monday, 30 April 12
“The Cloud”

                      • Virtualisation & Cloud IaaS lowered cost of
                        entry for businesses
                      • No hardware, but still sysadmin tasks
                      • Small companies get big company issues


Monday, 30 April 12
Agile Infrastructure

                      • New technologies iterate fast
                      • Changing platform requirements
                      • Cutting-edge vs tried-and-tested


Monday, 30 April 12
Monday, 30 April 12
Monday, 30 April 12
Monday, 30 April 12
• www.mydrivesolutions.com
                      • Insurance telematics
                      • Linux, chef, GIS, Ruby, Rails, SQL, NoSQL,
                        AWS, C++


Monday, 30 April 12
Monday, 30 April 12
DevOps

                      • Name invented around 2009
                      • DevOps Days around the world
                      • Making releases easier through
                        collaboration and automation




Monday, 30 April 12
Development

                      • Driven by functional requirements
                       • Business needs
                       • Features
                      • Working on desktop OS
                      • Local configuration & settings

Monday, 30 April 12
Operations

                      • Driven by non-functional requirements
                       • Stability
                       • Performance
                       • Monitoring & Alerting
                       • Minimising operational risk

Monday, 30 April 12
Monday, 30 April 12
Monday, 30 April 12
Infrastructure As Code
                      • Repeatability
                      • Automation
                      • Agility
                      • Scalability
                      • Reassurance
                      • Disaster Recovery
Monday, 30 April 12
Infrastructure As Code

                      • “Break the infrastructure down into
                        independent, reusable, network-accessible
                        services.

                        Integrate these services in such a way as to
                        produce the functionality your
                        infrastructure requires” - Adam Jacob



Monday, 30 April 12
Key Principles

                      • Modularity
                      • Cooperation
                      • Composability
                      • Extensibility
                      • Flexibility

Monday, 30 April 12
Key Principles

                      • Repeatability
                      • Declaration
                      • Abstraction
                      • Idempotence
                      • Convergence

Monday, 30 April 12
Chef vs Puppet
                      A Battle To The Death?




Monday, 30 April 12
Chef
                      • Open-Source Configuration Management
                      • Developed by Opscode
                      • Solo, Server, Hosted



Monday, 30 April 12
Chef
                      • Scriptable, repeatable systems
                      • Write cookbooks containing recipes
                      • resources, attributes, data bags



Monday, 30 April 12
Cookbooks & Recipes
                      • Cookbooks are the canonical unit of
                        distribution & sharing in Chef
                      • Cookbooks contain
                       • Recipes
                       • Attributes
                       • Templates & Files
Monday, 30 April 12
Attributes

                      • Every node has attributes
                      • Saved on Chef server
                      • Updated each chef-client run
                      • Cookbooks specify default attributes
                       • Override per-role and/or per-node

Monday, 30 April 12
Roles


                      • Roles contain other roles and recipes
                      • Define what you want your node to be


Monday, 30 April 12
Monday, 30 April 12
Data Bags




Monday, 30 April 12
Using a Data Bag




Monday, 30 April 12
Chef Server




Monday, 30 April 12
Knife

                      • command line tool to interact with Chef
                      • manage cookbooks, roles, data bags
                      • Search nodes
                      • Bootstrap nodes
                      • Plugins to manage cloud servers

Monday, 30 April 12
Keeping nodes
                               up to date
                      • Run chef-client as a service
                      • Updated a cookbook?
                       • Applied to all nodes automatically



Monday, 30 April 12
Test-Driving
                              Infrastructure
                      • http://www.cucumber-chef.org/
                      • https://github.com/Atalanta/cucumber-chef




Monday, 30 April 12
Monday, 30 April 12
Monday, 30 April 12
Monday, 30 April 12
Vagrant

                      • http://vagrantup.com
                      • Lightweight, reproducible, portable VMs
                      • Configure with Puppet, Chef & others
                      • Package boxes for others to use

Monday, 30 April 12
Live Demo




Monday, 30 April 12
Monday, 30 April 12
NoOps


                      • PaaS
                      • Heroku, Elastic Beanstalk, etc


Monday, 30 April 12
Monitoring & Alerting

                      • Nagios, greylog2 etc
                      • Hosted options
                      • #monitoringsucks


Monday, 30 April 12
Metrics

                      • “If you can’t measure it, it doesn’t exist”
                      • Track performance
                      • Critical counters
                      • Report against SLAs
                      • Identify problems & bottlenecks

Monday, 30 April 12
Metrics
                      • Statsd, Graphite




Monday, 30 April 12
Monday, 30 April 12
Communicate




Monday, 30 April 12
Communicate




Monday, 30 April 12
Zero-Downtime
                              Deploys
                      • Deploy updated code
                      • Graceful restarts
                      • Allow existing processes/requests to
                        complete
                      • New requests get processed by updated
                        code


Monday, 30 April 12
Configuration


                      • The configuration of an environment is as
                        important as the code
                      • Settings, values, ordering


Monday, 30 April 12
Database Schemas


                      • Make your db migrations non-destructive
                      • Update the schema before deploying code


Monday, 30 April 12
• https://github.com/mydrive/capistrano-
                        deploytags




                      • https://github.com/mydrive/capistrano-
                        detect-migrations




Monday, 30 April 12
Recap

                      • Bridge the gap between dev & ops
                      • Put your infrastructure in source control
                      • De-risk deploys by doing lots of them
                      • Automate everything

Monday, 30 April 12
@gavinheavyside
   gavin@heavyside.co.uk

Monday, 30 April 12

DevOps at ACCU 2012

  • 1.
  • 2.
    DevOps & Infrastructure As Code Gavin Heavyside - ACCU 2012 - 27 April 2012 gavin@heavyside.co.uk @gavinheavyside Monday, 30 April 12
  • 3.
    Getting Software Into Production • Deliver value to customers • New features • Bug fixes Monday, 30 April 12
  • 4.
    Software Releases • QA cycle • Downtime during deploy • Out-of-hours • Stress • Risk Monday, 30 April 12
  • 5.
    “The Cloud” • Virtualisation & Cloud IaaS lowered cost of entry for businesses • No hardware, but still sysadmin tasks • Small companies get big company issues Monday, 30 April 12
  • 6.
    Agile Infrastructure • New technologies iterate fast • Changing platform requirements • Cutting-edge vs tried-and-tested Monday, 30 April 12
  • 7.
  • 8.
  • 9.
  • 10.
    • www.mydrivesolutions.com • Insurance telematics • Linux, chef, GIS, Ruby, Rails, SQL, NoSQL, AWS, C++ Monday, 30 April 12
  • 11.
  • 12.
    DevOps • Name invented around 2009 • DevOps Days around the world • Making releases easier through collaboration and automation Monday, 30 April 12
  • 13.
    Development • Driven by functional requirements • Business needs • Features • Working on desktop OS • Local configuration & settings Monday, 30 April 12
  • 14.
    Operations • Driven by non-functional requirements • Stability • Performance • Monitoring & Alerting • Minimising operational risk Monday, 30 April 12
  • 15.
  • 16.
  • 17.
    Infrastructure As Code • Repeatability • Automation • Agility • Scalability • Reassurance • Disaster Recovery Monday, 30 April 12
  • 18.
    Infrastructure As Code • “Break the infrastructure down into independent, reusable, network-accessible services. Integrate these services in such a way as to produce the functionality your infrastructure requires” - Adam Jacob Monday, 30 April 12
  • 19.
    Key Principles • Modularity • Cooperation • Composability • Extensibility • Flexibility Monday, 30 April 12
  • 20.
    Key Principles • Repeatability • Declaration • Abstraction • Idempotence • Convergence Monday, 30 April 12
  • 21.
    Chef vs Puppet A Battle To The Death? Monday, 30 April 12
  • 22.
    Chef • Open-Source Configuration Management • Developed by Opscode • Solo, Server, Hosted Monday, 30 April 12
  • 23.
    Chef • Scriptable, repeatable systems • Write cookbooks containing recipes • resources, attributes, data bags Monday, 30 April 12
  • 24.
    Cookbooks & Recipes • Cookbooks are the canonical unit of distribution & sharing in Chef • Cookbooks contain • Recipes • Attributes • Templates & Files Monday, 30 April 12
  • 25.
    Attributes • Every node has attributes • Saved on Chef server • Updated each chef-client run • Cookbooks specify default attributes • Override per-role and/or per-node Monday, 30 April 12
  • 26.
    Roles • Roles contain other roles and recipes • Define what you want your node to be Monday, 30 April 12
  • 27.
  • 28.
  • 29.
    Using a DataBag Monday, 30 April 12
  • 30.
  • 31.
    Knife • command line tool to interact with Chef • manage cookbooks, roles, data bags • Search nodes • Bootstrap nodes • Plugins to manage cloud servers Monday, 30 April 12
  • 32.
    Keeping nodes up to date • Run chef-client as a service • Updated a cookbook? • Applied to all nodes automatically Monday, 30 April 12
  • 33.
    Test-Driving Infrastructure • http://www.cucumber-chef.org/ • https://github.com/Atalanta/cucumber-chef Monday, 30 April 12
  • 34.
  • 35.
  • 36.
  • 37.
    Vagrant • http://vagrantup.com • Lightweight, reproducible, portable VMs • Configure with Puppet, Chef & others • Package boxes for others to use Monday, 30 April 12
  • 38.
  • 39.
  • 40.
    NoOps • PaaS • Heroku, Elastic Beanstalk, etc Monday, 30 April 12
  • 41.
    Monitoring & Alerting • Nagios, greylog2 etc • Hosted options • #monitoringsucks Monday, 30 April 12
  • 42.
    Metrics • “If you can’t measure it, it doesn’t exist” • Track performance • Critical counters • Report against SLAs • Identify problems & bottlenecks Monday, 30 April 12
  • 43.
    Metrics • Statsd, Graphite Monday, 30 April 12
  • 44.
  • 45.
  • 46.
  • 47.
    Zero-Downtime Deploys • Deploy updated code • Graceful restarts • Allow existing processes/requests to complete • New requests get processed by updated code Monday, 30 April 12
  • 48.
    Configuration • The configuration of an environment is as important as the code • Settings, values, ordering Monday, 30 April 12
  • 49.
    Database Schemas • Make your db migrations non-destructive • Update the schema before deploying code Monday, 30 April 12
  • 50.
    • https://github.com/mydrive/capistrano- deploytags • https://github.com/mydrive/capistrano- detect-migrations Monday, 30 April 12
  • 51.
    Recap • Bridge the gap between dev & ops • Put your infrastructure in source control • De-risk deploys by doing lots of them • Automate everything Monday, 30 April 12
  • 52.
    @gavinheavyside gavin@heavyside.co.uk Monday, 30 April 12