SlideShare a Scribd company logo
1 of 20
Puppet
                by Dan Bode
bodepd <at > [‘freenode.net’, ‘twitter’, ‘github’]
About Me
Integration specialist at PuppetLabs

  Puppet expert/Ruby developer

Python Newbie/OpenStack newbie
What is Puppet?

• Declarative configuration language
• Declares desired configuration state
• Performs configuration as state changes
• Encapsulates configuration as higher level
  interfaces
Puppet’s model
current          desired
 state            state


          ==?


          Sync             Event
Resources describe state
  current          desired      package {‘git’:
                                  ensure => present,
   state            state       }




            ==?


            Sync             Event
Providers detect current state
rpm -q git
                      current          desired      package {‘git’:
                                                      ensure => present,
dpkg-query --search    state            state       }
git



                                ==?


                                Sync             Event
Puppet compares
rpm -q git
                       current             desired      package {‘git’:
                                                          ensure => present,
dpkg-query --search     state               state       }
git



                                          present
                          absent    !=


                                   Sync              Event
Providers remediate
rpm -q git
                               current              desired      package {‘git’:
                                                                   ensure => present,
dpkg-query --search             state                state       }
git



                                                   present
                                   absent    !=

             yum install git
                                            Sync              Event
             apt-get install git
Reports maintained for state changes
rpm -q git
                               current              desired      package {‘git’:
                                                                   ensure => present,
dpkg-query --search             state                state       }
git



                                                   present
                                   absent    !=

             yum install git                                              state transition:
                                            Sync              Event       absent -> present
             apt-get install git
Noop Mode
rpm -q git
                      current           desired      package {‘git’:
                                                       ensure => present,
dpkg-query --search    state             state       }
git



                                       present
                         absent   !=

                                                              desired
                                                              state transition:
                                                  Event       absent -> present
Facter
System specific key value pairs:

architecture           => i386
ipaddress              => 192.168.0.4
macaddress             => aa:cc:99:bb:50:a3
operatingsystem        => Darwin
operatingsystemrelease => 10.3.2
Facter
System specific key value pairs:

architecture           => i386
ipaddress              => 192.168.0.4
macaddress             => aa:cc:99:bb:50:a3
operatingsystem        => Darwin
operatingsystemrelease => 10.3.2
# customizable
my_openstack_cluser => cluster_one
my_openstack_role      => swift_storage
Common Resource Types
              Types == Interfaces

•   package

•   service        •   exec

•   file            •   host

•   user

•   group
Common Resource Providers
        Providers == Implementations


• Package providers:
 • rpm
 • yum
 • apt
• Service Providers
 • init
 • systemd
 • upstart
Custom Resource Types

•   database         •   nova_config

•   database_user    •   keystone_user

•   database_grant   •   nova_network

•   rabbitmq_user    •   keystone_tenant

•   rabbitmq_vhost   •   ......
Classes
                    Class[keystone]
                        Package[keystone]


Interface               Group[keystone]

- bind_host
- public_port            User[keystone]
- admin_port
- admin_token
- compute_port   File[/etc/keystone/keystone.conf]


                        Service[keystone]
Compose Nodes from Classes
         Node[nova_contro                               Node[nova_compu
               ller]                                          te1]
                                                        Node[nova_compu
mysql::server     rabbit::queue                                  te2]
                                                           nova::compute::libvirt
                                        glance::api     Node[nova_compu
 keystone                nova::api                                te3]
                                                          nova::compute::libvirt
                                                        Node[nova_compu
nova::network::flatdhcp               glance::registry              te4]
                                                            nova::compute::libvirt

                                                            nova::compute::libvirt
   memcached             nova::scheduler

                    horizon
Modules
|-- manifests         |-- lib
| |-- api.pp          | `-- puppet
| |-- compute         |       |-- provider
| | |-- kvm.pp        |       | |-- nova_config
| | |-- libvirt.pp    |       | | `-- parsed.rb
| |-- compute.pp      |       | |-- nova_floating
| |-- db.pp           |       | | `--
| |-- manage          nova_manage.rb
| | |-- floating.pp    |       | |-- nova_network
| | |-- network.pp    |       | | `--
| |-- network         nova_manage.rb
| | |-- bridge.pp     |       `-- type
| | |-- flat.pp        |           |-- nova_config.rb
| | |-- flatdhcp.pp    |           |-- nova_floating.rb
| | `-- vlan.pp       |           |-- nova_network.rb
| |-- network.pp      |-- templates
| |-- rabbitmq.pp     | |-- api-paste.ini.erb
| |-- scheduler.pp    | `-- nova.conf.erb
OpenStack Modules
•   nova           •   rabbitmq
•   swift          •   mysql
•   glance         •   memcache
•   keystone       •   apt
•   horizon        •   concat

                   •   ntp

                   •   rsync

                   •   stdlib

                   •   xinetd
Interested in contributing?


•   git clone --recurse git://github.com/puppetlabs/
    puppetlabs-openstack

•   compose manifests to describe your exact
    deployment preference

    •   examples can be found in nova/examples/...

More Related Content

More from Puppet

Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping groundPuppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Puppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet
 
Bolt on Windows - James Pogran
Bolt on Windows - James PogranBolt on Windows - James Pogran
Bolt on Windows - James PogranPuppet
 
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...Puppet
 
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Puppet
 

More from Puppet (20)

Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Puppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav HadzhievPuppet in k8s, Miroslav Hadzhiev
Puppet in k8s, Miroslav Hadzhiev
 
Bolt on Windows - James Pogran
Bolt on Windows - James PogranBolt on Windows - James Pogran
Bolt on Windows - James Pogran
 
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
The Business Value of Modernizing your Windows Infrastructure and Bringing Li...
 
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
Manage your Windows Infrastructure with Puppet Bolt - August 26 - 2020
 

Recently uploaded

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 productivityPrincipled Technologies
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
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 WorkerThousandEyes
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
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 DevelopmentsTrustArc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Recently uploaded (20)

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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

Puppet + OpenStack: Presentation from OpenStack Summit 4/16/2012

  • 1. Puppet by Dan Bode bodepd <at > [‘freenode.net’, ‘twitter’, ‘github’]
  • 2. About Me Integration specialist at PuppetLabs Puppet expert/Ruby developer Python Newbie/OpenStack newbie
  • 3. What is Puppet? • Declarative configuration language • Declares desired configuration state • Performs configuration as state changes • Encapsulates configuration as higher level interfaces
  • 4. Puppet’s model current desired state state ==? Sync Event
  • 5. Resources describe state current desired package {‘git’: ensure => present, state state } ==? Sync Event
  • 6. Providers detect current state rpm -q git current desired package {‘git’: ensure => present, dpkg-query --search state state } git ==? Sync Event
  • 7. Puppet compares rpm -q git current desired package {‘git’: ensure => present, dpkg-query --search state state } git present absent != Sync Event
  • 8. Providers remediate rpm -q git current desired package {‘git’: ensure => present, dpkg-query --search state state } git present absent != yum install git Sync Event apt-get install git
  • 9. Reports maintained for state changes rpm -q git current desired package {‘git’: ensure => present, dpkg-query --search state state } git present absent != yum install git state transition: Sync Event absent -> present apt-get install git
  • 10. Noop Mode rpm -q git current desired package {‘git’: ensure => present, dpkg-query --search state state } git present absent != desired state transition: Event absent -> present
  • 11. Facter System specific key value pairs: architecture => i386 ipaddress => 192.168.0.4 macaddress => aa:cc:99:bb:50:a3 operatingsystem => Darwin operatingsystemrelease => 10.3.2
  • 12. Facter System specific key value pairs: architecture => i386 ipaddress => 192.168.0.4 macaddress => aa:cc:99:bb:50:a3 operatingsystem => Darwin operatingsystemrelease => 10.3.2 # customizable my_openstack_cluser => cluster_one my_openstack_role => swift_storage
  • 13. Common Resource Types Types == Interfaces • package • service • exec • file • host • user • group
  • 14. Common Resource Providers Providers == Implementations • Package providers: • rpm • yum • apt • Service Providers • init • systemd • upstart
  • 15. Custom Resource Types • database • nova_config • database_user • keystone_user • database_grant • nova_network • rabbitmq_user • keystone_tenant • rabbitmq_vhost • ......
  • 16. Classes Class[keystone] Package[keystone] Interface Group[keystone] - bind_host - public_port User[keystone] - admin_port - admin_token - compute_port File[/etc/keystone/keystone.conf] Service[keystone]
  • 17. Compose Nodes from Classes Node[nova_contro Node[nova_compu ller] te1] Node[nova_compu mysql::server rabbit::queue te2] nova::compute::libvirt glance::api Node[nova_compu keystone nova::api te3] nova::compute::libvirt Node[nova_compu nova::network::flatdhcp glance::registry te4] nova::compute::libvirt nova::compute::libvirt memcached nova::scheduler horizon
  • 18. Modules |-- manifests |-- lib | |-- api.pp | `-- puppet | |-- compute | |-- provider | | |-- kvm.pp | | |-- nova_config | | |-- libvirt.pp | | | `-- parsed.rb | |-- compute.pp | | |-- nova_floating | |-- db.pp | | | `-- | |-- manage nova_manage.rb | | |-- floating.pp | | |-- nova_network | | |-- network.pp | | | `-- | |-- network nova_manage.rb | | |-- bridge.pp | `-- type | | |-- flat.pp | |-- nova_config.rb | | |-- flatdhcp.pp | |-- nova_floating.rb | | `-- vlan.pp | |-- nova_network.rb | |-- network.pp |-- templates | |-- rabbitmq.pp | |-- api-paste.ini.erb | |-- scheduler.pp | `-- nova.conf.erb
  • 19. OpenStack Modules • nova • rabbitmq • swift • mysql • glance • memcache • keystone • apt • horizon • concat • ntp • rsync • stdlib • xinetd
  • 20. Interested in contributing? • git clone --recurse git://github.com/puppetlabs/ puppetlabs-openstack • compose manifests to describe your exact deployment preference • examples can be found in nova/examples/...

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n