SlideShare a Scribd company logo
Monday, June 18, 12
Puppet & Openstack:
              Building and Testing Community Puppet Modules

              Teyo Tyree
              Co-Founder
              Dan Bode
              Integration Specialist


Monday, June 18, 12
Monday, June 18, 12
Laziness...Impatience...Hubris...




                                                     Larry Wall
                                                     The Internet



Monday, June 18, 12
Puppet automates
                         computers.

Monday, June 18, 12
Declarative
                      Idempotent
                      Model Driven

Monday, June 18, 12
Puppetized infrastucture is awesome. Using
                      someone else’s puppetized infrastructure is
                      even more awesome.



                                                          Teyo Tyree
                                                          Atlassian Conf 2012


Monday, June 18, 12
Build Reusable Infrastructure



Monday, June 18, 12
Monday, June 18, 12
New Goal


Monday, June 18, 12
Build reusable models for
                       complex applications.

Monday, June 18, 12
Model Openstack



Monday, June 18, 12
OpenStack is an
                      opensource cloud
                      controlling software
                      that is comprised of
                      three components
                      called Compute,
                      Object Storage, and
                      Image Service.



Monday, June 18, 12
Monday, June 18, 12
repos:
                        repo_paths:
                          # openstack git repos
                          git://github.com/puppetlabs/puppetlabs-nova:       nova
                          git://github.com/puppetlabs/puppetlabs-glance:     glance
                          git://github.com/puppetlabs/puppetlabs-swift:      swift
                          git://github.com/puppetlabs/puppetlabs-keystone:   keystone
                          git://github.com/puppetlabs/puppetlabs-horizon:    horizon
                          # openstack middleware
                          git://github.com/puppetlabs/puppetlabs-rabbitmq:   rabbitmq


Nerd Sniped               git://github.com/puppetlabs/puppetlabs-mysql:
                          git://github.com/puppetlabs/puppetlabs-git:
                          git://github.com/puppetlabs/puppetlabs-vcsrepo:
                          git://github.com/saz/puppet-memcached:
                          git://github.com/puppetlabs/puppetlabs-rsync:
                                                                             mysql
                                                                             git
                                                                             vcsrepo
                                                                             memcached
                                                                             rsync
                          # other deps
                          git://github.com/ghoneycutt/puppet-xinetd:         xinetd
                          git://github.com/saz/puppet-ssh:                   ssh
                          git://github.com/puppetlabs/puppetlabs-stdlib:     stdlib
                          git://github.com/puppetlabs/puppetlabs-apt:        apt
                          git://github.com/ripienaar/puppet-concat:          concat
                          git://github.com/duritong/puppet-sysctl.git:       sysctl




Monday, June 18, 12
repos:
                        repo_paths:
                          # openstack git repos
                          git://github.com/puppetlabs/puppetlabs-nova:       nova
                          git://github.com/puppetlabs/puppetlabs-glance:     glance
                          git://github.com/puppetlabs/puppetlabs-swift:      swift
                          git://github.com/puppetlabs/puppetlabs-keystone:   keystone
                          git://github.com/puppetlabs/puppetlabs-horizon:    horizon
                          # openstack middleware
                          git://github.com/puppetlabs/puppetlabs-rabbitmq:   rabbitmq


Lego Blocks               git://github.com/puppetlabs/puppetlabs-mysql:
                          git://github.com/puppetlabs/puppetlabs-git:
                          git://github.com/puppetlabs/puppetlabs-vcsrepo:
                          git://github.com/saz/puppet-memcached:
                          git://github.com/puppetlabs/puppetlabs-rsync:
                                                                             mysql
                                                                             git
                                                                             vcsrepo
                                                                             memcached
                                                                             rsync
                          # other deps
                          git://github.com/ghoneycutt/puppet-xinetd:         xinetd
                          git://github.com/saz/puppet-ssh:                   ssh
                          git://github.com/puppetlabs/puppetlabs-stdlib:     stdlib
                          git://github.com/puppetlabs/puppetlabs-apt:        apt
                          git://github.com/ripienaar/puppet-concat:          concat
                          git://github.com/duritong/puppet-sysctl.git:       sysctl




Monday, June 18, 12
class nova(
                        $nova_cluster_id='localcluster',
                        $sql_connection = false,
                        $image_service = 'nova.image.glance.GlanceImageService',
                        $glance_api_servers = 'localhost:9292',
                        $rabbit_host = 'localhost',
                        $rabbit_password='guest',
                        $rabbit_port='5672',
                        $rabbit_userid='guest',


        Flexible
                        $rabbit_virtual_host='/',
                        $auth_strategy = 'keystone',
                        $service_down_time = 60,
                        $logdir = '/var/log/nova',
                        $state_path = '/var/lib/nova',
                        $lock_path = $::nova::params::lock_path,
                        $verbose = false,
                        $periodic_interval = '60',
                        $report_interval = '10',
                        $root_helper = $::nova::params::root_helper
                      )
                      {...}




Monday, June 18, 12
We aren’t Openstack experts.



                      We need the community.
Monday, June 18, 12
Puppetized infrastucture is awesome. Using
                      someone else’s Puppetized infrastructure is
                      even more awesome!



                                                          Teyo Tyree
                                                          Atlassian Conf 2012


Monday, June 18, 12
Engagement



Monday, June 18, 12
Fear the Fork!




Monday, June 18, 12
Monday, June 18, 12
300+ merged pull requests!




Monday, June 18, 12
class nova(
                        $nova_cluster_id='localcluster',
                        $sql_connection = false,
                        $image_service = 'nova.image.glance.GlanceImageService',
                        $glance_api_servers = 'localhost:9292',
                        $rabbit_host = 'localhost',
                        $rabbit_password='guest',
                        $rabbit_port='5672',
                        $rabbit_userid='guest',


        Flexible
                        $rabbit_virtual_host='/',
                        $auth_strategy = 'keystone',
                        $service_down_time = 60,
                        $logdir = '/var/log/nova',
                        $state_path = '/var/lib/nova',
                        $lock_path = $::nova::params::lock_path,
                        $verbose = false,
                        $periodic_interval = '60',
                        $report_interval = '10',
                        $root_helper = $::nova::params::root_helper
                      )
                      {...}




Monday, June 18, 12
class nova::params {

                        case $::osfamily {
                          'RedHat': {
                            # package names
                            $api_package_name       =   false
                            $cert_package_name      =   false
                            $common_package_name    =   'openstack-nova'



     Multi-platform
                            $compute_package_name   =   false
                            ...
                               }
                          'Debian': {
                            # package names
                            $api_package_name       =   'nova-api'
                            $cert_package_name      =   'nova-cert'
                            $common_package_name    =   'nova-common'
                            $compute_package_name   =   'nova-compute'
                            ...
                            }




Monday, June 18, 12
Whoa, we need tests!




Monday, June 18, 12
Data


                                  Puppet

           Rspec-Puppet   Facts            Model




Monday, June 18, 12
let :facts do
                                                     Data
            {:operatingsystem => ‘RedHat’}
          end
                                                     Puppet

                                             Facts            Model




Monday, June 18, 12
Data
       let :params do
         {:rabbit_host => ‘10.0.0.42’}
       end
                                            Puppet

                                    Facts            Model




Monday, June 18, 12
it do
                                                      Data
        should contain_file (‘/etc/nova.conf’).
           with_content (‘rabbit_host = 10.0.0.42’)
       end
                                                      Puppet

                                             Facts             Model




Monday, June 18, 12
Openstack Devops



Monday, June 18, 12
Openstack is not static!


Monday, June 18, 12
Tempest


Monday, June 18, 12
Puppet
               defines
             deployments
Monday, June 18, 12
Testing Openstack?


Monday, June 18, 12
Git
                                     Tempest



                            Puppet




Monday, June 18, 12
https://github.com/puppetlabs/puppetlabs-openstack
                      http://rspec-puppet.com/
                      https://github.com/openstack/tempest




Monday, June 18, 12
Questions?


Monday, June 18, 12

More Related Content

PDF
Linux & Open Source - Alternative Software
PDF
Building More with Less
PDF
OSMC 2015:The road to lazy monitoring with Icinga 2 and Puppet by Tom de Vylder
PDF
インフラエンジニアのためのGit入門
PDF
Better Documentation Through Automation: Creating docutils & Sphinx Extensions
PDF
儲かるドキュメント
PDF
Openstack havana
PPTX
201204 random clustering
Linux & Open Source - Alternative Software
Building More with Less
OSMC 2015:The road to lazy monitoring with Icinga 2 and Puppet by Tom de Vylder
インフラエンジニアのためのGit入門
Better Documentation Through Automation: Creating docutils & Sphinx Extensions
儲かるドキュメント
Openstack havana
201204 random clustering

What's hot (8)

PDF
Testing Drupal with Ghosts and Gherkin
PDF
Git the Docs: Learning Git in a safe space
PDF
Integrating tornado and webpack
PDF
Github flow
PDF
Singularity Registry HPC
PPTX
Introduction to Singularity and Data Containers
PDF
Tools beyond ruby on rails
PDF
Migrating existing Projects to Wonder
Testing Drupal with Ghosts and Gherkin
Git the Docs: Learning Git in a safe space
Integrating tornado and webpack
Github flow
Singularity Registry HPC
Introduction to Singularity and Data Containers
Tools beyond ruby on rails
Migrating existing Projects to Wonder
Ad

Similar to Aligning Continuous Integration Deployment: Automated Validation of OpenStack Deployments (20)

KEY
20100425 Configuration Management With Puppet Lfnw
PDF
Puppet managed loadays
PDF
20090514 Introducing Puppet To Sasag
PDF
Puppet modules: A Holistic Approach - Geneva
KEY
Puppet for Java developers - JavaZone NO 2012
KEY
From Dev to DevOps - FOSDEM 2012
PDF
Developing IT infrastructures with Puppet
PDF
Puppet Modules: An Holistic Approach - Alessandro Franceschi of Lab42 - Puppe...
PDF
Puppet modules: An Holistic Approach
PDF
Islands: Puppet at Bulletproof Networks
KEY
Openstack presentation
PDF
Puppet and Telefonica R&D
PDF
From Dev to DevOps - Codemotion ES 2012
PDF
PuppetCamp SEA 1 - Puppet Deployment at OnApp
PDF
Puppet Deployment at OnApp
PDF
PuppetCamp SEA 1 - Puppet Deployment at OnApp
KEY
From Dev to DevOps - ApacheCON NA 2011
PDF
DevOps tools for everyone - Vagrant, Puppet and Webmin
PPT
OpenStack and Puppet
PDF
Puppet at Opera Sofware - PuppetCamp Oslo 2013
20100425 Configuration Management With Puppet Lfnw
Puppet managed loadays
20090514 Introducing Puppet To Sasag
Puppet modules: A Holistic Approach - Geneva
Puppet for Java developers - JavaZone NO 2012
From Dev to DevOps - FOSDEM 2012
Developing IT infrastructures with Puppet
Puppet Modules: An Holistic Approach - Alessandro Franceschi of Lab42 - Puppe...
Puppet modules: An Holistic Approach
Islands: Puppet at Bulletproof Networks
Openstack presentation
Puppet and Telefonica R&D
From Dev to DevOps - Codemotion ES 2012
PuppetCamp SEA 1 - Puppet Deployment at OnApp
Puppet Deployment at OnApp
PuppetCamp SEA 1 - Puppet Deployment at OnApp
From Dev to DevOps - ApacheCON NA 2011
DevOps tools for everyone - Vagrant, Puppet and Webmin
OpenStack and Puppet
Puppet at Opera Sofware - PuppetCamp Oslo 2013
Ad

More from Atlassian (20)

PPTX
International Women's Day 2020
PDF
10 emerging trends that will unbreak your workplace in 2020
PDF
Forge App Showcase
PDF
Let's Build an Editor Macro with Forge UI
PDF
Meet the Forge Runtime
PDF
Forge UI: A New Way to Customize the Atlassian User Experience
PDF
Take Action with Forge Triggers
PDF
Observability and Troubleshooting in Forge
PDF
Trusted by Default: The Forge Security & Privacy Model
PDF
Designing Forge UI: A Story of Designing an App UI System
PDF
Forge: Under the Hood
PDF
Access to User Activities - Activity Platform APIs
PDF
Design Your Next App with the Atlassian Vendor Sketch Plugin
PDF
Tear Up Your Roadmap and Get Out of the Building
PDF
Nailing Measurement: a Framework for Measuring Metrics that Matter
PDF
Building Apps With Color Blind Users in Mind
PDF
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
PDF
Beyond Diversity: A Guide to Building Balanced Teams
PDF
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
PDF
Building Apps With Enterprise in Mind
International Women's Day 2020
10 emerging trends that will unbreak your workplace in 2020
Forge App Showcase
Let's Build an Editor Macro with Forge UI
Meet the Forge Runtime
Forge UI: A New Way to Customize the Atlassian User Experience
Take Action with Forge Triggers
Observability and Troubleshooting in Forge
Trusted by Default: The Forge Security & Privacy Model
Designing Forge UI: A Story of Designing an App UI System
Forge: Under the Hood
Access to User Activities - Activity Platform APIs
Design Your Next App with the Atlassian Vendor Sketch Plugin
Tear Up Your Roadmap and Get Out of the Building
Nailing Measurement: a Framework for Measuring Metrics that Matter
Building Apps With Color Blind Users in Mind
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Beyond Diversity: A Guide to Building Balanced Teams
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
Building Apps With Enterprise in Mind

Recently uploaded (20)

PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
cuic standard and advanced reporting.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
A Presentation on Artificial Intelligence
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PPTX
Cloud computing and distributed systems.
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Electronic commerce courselecture one. Pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
cuic standard and advanced reporting.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
A Presentation on Artificial Intelligence
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Cloud computing and distributed systems.
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
MYSQL Presentation for SQL database connectivity
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Dropbox Q2 2025 Financial Results & Investor Presentation
Mobile App Security Testing_ A Comprehensive Guide.pdf
Review of recent advances in non-invasive hemoglobin estimation
“AI and Expert System Decision Support & Business Intelligence Systems”
20250228 LYD VKU AI Blended-Learning.pptx
Electronic commerce courselecture one. Pdf
Per capita expenditure prediction using model stacking based on satellite ima...

Aligning Continuous Integration Deployment: Automated Validation of OpenStack Deployments

  • 2. Puppet & Openstack: Building and Testing Community Puppet Modules Teyo Tyree Co-Founder Dan Bode Integration Specialist Monday, June 18, 12
  • 4. Laziness...Impatience...Hubris... Larry Wall The Internet Monday, June 18, 12
  • 5. Puppet automates computers. Monday, June 18, 12
  • 6. Declarative Idempotent Model Driven Monday, June 18, 12
  • 7. Puppetized infrastucture is awesome. Using someone else’s puppetized infrastructure is even more awesome. Teyo Tyree Atlassian Conf 2012 Monday, June 18, 12
  • 11. Build reusable models for complex applications. Monday, June 18, 12
  • 13. OpenStack is an opensource cloud controlling software that is comprised of three components called Compute, Object Storage, and Image Service. Monday, June 18, 12
  • 15. repos:   repo_paths:     # openstack git repos     git://github.com/puppetlabs/puppetlabs-nova: nova     git://github.com/puppetlabs/puppetlabs-glance: glance     git://github.com/puppetlabs/puppetlabs-swift: swift     git://github.com/puppetlabs/puppetlabs-keystone: keystone     git://github.com/puppetlabs/puppetlabs-horizon: horizon     # openstack middleware     git://github.com/puppetlabs/puppetlabs-rabbitmq: rabbitmq Nerd Sniped     git://github.com/puppetlabs/puppetlabs-mysql:     git://github.com/puppetlabs/puppetlabs-git:     git://github.com/puppetlabs/puppetlabs-vcsrepo:     git://github.com/saz/puppet-memcached:     git://github.com/puppetlabs/puppetlabs-rsync: mysql git vcsrepo memcached rsync     # other deps     git://github.com/ghoneycutt/puppet-xinetd: xinetd     git://github.com/saz/puppet-ssh: ssh     git://github.com/puppetlabs/puppetlabs-stdlib: stdlib     git://github.com/puppetlabs/puppetlabs-apt: apt     git://github.com/ripienaar/puppet-concat: concat     git://github.com/duritong/puppet-sysctl.git: sysctl Monday, June 18, 12
  • 16. repos:   repo_paths:     # openstack git repos     git://github.com/puppetlabs/puppetlabs-nova: nova     git://github.com/puppetlabs/puppetlabs-glance: glance     git://github.com/puppetlabs/puppetlabs-swift: swift     git://github.com/puppetlabs/puppetlabs-keystone: keystone     git://github.com/puppetlabs/puppetlabs-horizon: horizon     # openstack middleware     git://github.com/puppetlabs/puppetlabs-rabbitmq: rabbitmq Lego Blocks     git://github.com/puppetlabs/puppetlabs-mysql:     git://github.com/puppetlabs/puppetlabs-git:     git://github.com/puppetlabs/puppetlabs-vcsrepo:     git://github.com/saz/puppet-memcached:     git://github.com/puppetlabs/puppetlabs-rsync: mysql git vcsrepo memcached rsync     # other deps     git://github.com/ghoneycutt/puppet-xinetd: xinetd     git://github.com/saz/puppet-ssh: ssh     git://github.com/puppetlabs/puppetlabs-stdlib: stdlib     git://github.com/puppetlabs/puppetlabs-apt: apt     git://github.com/ripienaar/puppet-concat: concat     git://github.com/duritong/puppet-sysctl.git: sysctl Monday, June 18, 12
  • 17. class nova(   $nova_cluster_id='localcluster',   $sql_connection = false,   $image_service = 'nova.image.glance.GlanceImageService',   $glance_api_servers = 'localhost:9292',   $rabbit_host = 'localhost',   $rabbit_password='guest',   $rabbit_port='5672',   $rabbit_userid='guest', Flexible   $rabbit_virtual_host='/',   $auth_strategy = 'keystone',   $service_down_time = 60,   $logdir = '/var/log/nova',   $state_path = '/var/lib/nova',   $lock_path = $::nova::params::lock_path,   $verbose = false,   $periodic_interval = '60',   $report_interval = '10',   $root_helper = $::nova::params::root_helper ) {...} Monday, June 18, 12
  • 18. We aren’t Openstack experts. We need the community. Monday, June 18, 12
  • 19. Puppetized infrastucture is awesome. Using someone else’s Puppetized infrastructure is even more awesome! Teyo Tyree Atlassian Conf 2012 Monday, June 18, 12
  • 21. Fear the Fork! Monday, June 18, 12
  • 23. 300+ merged pull requests! Monday, June 18, 12
  • 24. class nova(   $nova_cluster_id='localcluster',   $sql_connection = false,   $image_service = 'nova.image.glance.GlanceImageService',   $glance_api_servers = 'localhost:9292',   $rabbit_host = 'localhost',   $rabbit_password='guest',   $rabbit_port='5672',   $rabbit_userid='guest', Flexible   $rabbit_virtual_host='/',   $auth_strategy = 'keystone',   $service_down_time = 60,   $logdir = '/var/log/nova',   $state_path = '/var/lib/nova',   $lock_path = $::nova::params::lock_path,   $verbose = false,   $periodic_interval = '60',   $report_interval = '10',   $root_helper = $::nova::params::root_helper ) {...} Monday, June 18, 12
  • 25. class nova::params {   case $::osfamily {     'RedHat': { # package names       $api_package_name = false       $cert_package_name = false       $common_package_name = 'openstack-nova' Multi-platform       $compute_package_name = false       ...          }     'Debian': { # package names       $api_package_name = 'nova-api'       $cert_package_name = 'nova-cert'       $common_package_name = 'nova-common'       $compute_package_name = 'nova-compute'       ... } Monday, June 18, 12
  • 26. Whoa, we need tests! Monday, June 18, 12
  • 27. Data Puppet Rspec-Puppet Facts Model Monday, June 18, 12
  • 28. let :facts do Data {:operatingsystem => ‘RedHat’} end Puppet Facts Model Monday, June 18, 12
  • 29. Data let :params do {:rabbit_host => ‘10.0.0.42’} end Puppet Facts Model Monday, June 18, 12
  • 30. it do Data should contain_file (‘/etc/nova.conf’). with_content (‘rabbit_host = 10.0.0.42’) end Puppet Facts Model Monday, June 18, 12
  • 32. Openstack is not static! Monday, June 18, 12
  • 34. Puppet defines deployments Monday, June 18, 12
  • 36. Git Tempest Puppet Monday, June 18, 12
  • 37. https://github.com/puppetlabs/puppetlabs-openstack http://rspec-puppet.com/ https://github.com/openstack/tempest Monday, June 18, 12