SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Migrating existing Projects to Wonder
Migrating existing Projects to WonderMigrating existing Projects to Wonder
Migrating existing Projects to Wonder
WO Community
 

Was ist angesagt? (8)

Testing Drupal with Ghosts and Gherkin
Testing Drupal  with Ghosts and GherkinTesting Drupal  with Ghosts and Gherkin
Testing Drupal with Ghosts and Gherkin
 
Git the Docs: Learning Git in a safe space
Git the Docs: Learning Git in a safe spaceGit the Docs: Learning Git in a safe space
Git the Docs: Learning Git in a safe space
 
Integrating tornado and webpack
Integrating tornado and webpackIntegrating tornado and webpack
Integrating tornado and webpack
 
Github flow
Github flowGithub flow
Github flow
 
Singularity Registry HPC
Singularity Registry HPCSingularity Registry HPC
Singularity Registry HPC
 
Introduction to Singularity and Data Containers
Introduction to Singularity and Data ContainersIntroduction to Singularity and Data Containers
Introduction to Singularity and Data Containers
 
Tools beyond ruby on rails
Tools beyond ruby on railsTools beyond ruby on rails
Tools beyond ruby on rails
 
Migrating existing Projects to Wonder
Migrating existing Projects to WonderMigrating existing Projects to Wonder
Migrating existing Projects to Wonder
 

Ähnlich wie Aligning Continuous Integration Deployment: Automated Validation of OpenStack Deployments

Puppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG editionPuppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG edition
Joshua Thijssen
 
Dtrace и немного магии
Dtrace и немного магииDtrace и немного магии
Dtrace и немного магии
Dan Kruchinin
 

Ähnlich wie Aligning Continuous Integration Deployment: Automated Validation of OpenStack Deployments (20)

Puppet at GitHub / ChatOps
Puppet at GitHub / ChatOpsPuppet at GitHub / ChatOps
Puppet at GitHub / ChatOps
 
IAC_PuppetCampLondon_2016
IAC_PuppetCampLondon_2016IAC_PuppetCampLondon_2016
IAC_PuppetCampLondon_2016
 
Puppet at GitHub
Puppet at GitHubPuppet at GitHub
Puppet at GitHub
 
OSMC 2015 | The Road to Lazy Monitoring with Icinga 2 & Puppet by Tom De Vylder
OSMC 2015 | The Road to Lazy Monitoring with Icinga 2 & Puppet by Tom De VylderOSMC 2015 | The Road to Lazy Monitoring with Icinga 2 & Puppet by Tom De Vylder
OSMC 2015 | The Road to Lazy Monitoring with Icinga 2 & Puppet by Tom De Vylder
 
Measuring Software development with GrimoireLab
Measuring Software development with GrimoireLabMeasuring Software development with GrimoireLab
Measuring Software development with GrimoireLab
 
Hacking Lab con ProxMox e Metasploitable
Hacking Lab con ProxMox e MetasploitableHacking Lab con ProxMox e Metasploitable
Hacking Lab con ProxMox e Metasploitable
 
Puppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG editionPuppet for dummies - PHPBenelux UG edition
Puppet for dummies - PHPBenelux UG edition
 
Git::Hooks
Git::HooksGit::Hooks
Git::Hooks
 
Riding on rails3 with full stack of gems
Riding on rails3 with full stack of gemsRiding on rails3 with full stack of gems
Riding on rails3 with full stack of gems
 
Puppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 EditionPuppet for dummies - ZendCon 2011 Edition
Puppet for dummies - ZendCon 2011 Edition
 
Dtrace и немного магии
Dtrace и немного магииDtrace и немного магии
Dtrace и немного магии
 
Deploying a Pylons app to Google App Engine
Deploying a Pylons app to Google App EngineDeploying a Pylons app to Google App Engine
Deploying a Pylons app to Google App Engine
 
Puppet Loves RSpec, Why You Should, Too
Puppet Loves RSpec, Why You Should, TooPuppet Loves RSpec, Why You Should, Too
Puppet Loves RSpec, Why You Should, Too
 
Puppet loves RSpec, why you should, too
Puppet loves RSpec, why you should, tooPuppet loves RSpec, why you should, too
Puppet loves RSpec, why you should, too
 
You got database in my cloud (short version)
You got database  in my cloud (short version)You got database  in my cloud (short version)
You got database in my cloud (short version)
 
Release management with NuGet/Chocolatey/JIRA
Release management with NuGet/Chocolatey/JIRARelease management with NuGet/Chocolatey/JIRA
Release management with NuGet/Chocolatey/JIRA
 
Containers for Science and High-Performance Computing
Containers for Science and High-Performance ComputingContainers for Science and High-Performance Computing
Containers for Science and High-Performance Computing
 
Container: is it safe enough to run you application?
Container: is it safe enough to run you application?Container: is it safe enough to run you application?
Container: is it safe enough to run you application?
 
Puppet 3: Present and Future Tense
Puppet 3: Present and Future TensePuppet 3: Present and Future Tense
Puppet 3: Present and Future Tense
 
Puppet 3: Present and Future Tense
Puppet 3: Present and Future TensePuppet 3: Present and Future Tense
Puppet 3: Present and Future Tense
 

Mehr von Atlassian

Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
Atlassian
 

Mehr von Atlassian (20)

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

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

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