SlideShare uma empresa Scribd logo
1 de 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/...

Mais conteúdo relacionado

Mais de Puppet

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
Puppet
 

Mais de 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
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
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...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
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
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
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
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
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
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 

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/...

Notas do Editor

  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