Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Puppet                by Dan Bodebodepd <at > [‘freenode.net’, ‘twitter’, ‘github’]
About MeIntegration specialist at PuppetLabs  Puppet expert/Ruby developerPython Newbie/OpenStack newbie
What is Puppet?• Declarative configuration language• Declares desired configuration state• Performs configuration as state ch...
Puppet’s modelcurrent          desired state            state          ==?          Sync             Event
Resources describe state  current          desired      package {‘git’:                                  ensure => present...
Providers detect current staterpm -q git                      current          desired      package {‘git’:               ...
Puppet comparesrpm -q git                       current             desired      package {‘git’:                          ...
Providers remediaterpm -q git                               current              desired      package {‘git’:             ...
Reports maintained for state changesrpm -q git                               current              desired      package {‘g...
Noop Moderpm -q git                      current           desired      package {‘git’:                                   ...
FacterSystem specific key value pairs:architecture           => i386ipaddress              => 192.168.0.4macaddress        ...
FacterSystem specific key value pairs:architecture           => i386ipaddress              => 192.168.0.4macaddress        ...
Common Resource Types              Types == Interfaces•   package•   service        •   exec•   file            •   host•  ...
Common Resource Providers        Providers == Implementations• Package providers: • rpm • yum • apt• Service Providers • i...
Custom Resource Types•   database         •   nova_config•   database_user    •   keystone_user•   database_grant   •   nov...
Classes                    Class[keystone]                        Package[keystone]Interface               Group[keystone]...
Compose Nodes from Classes         Node[nova_contro                               Node[nova_compu               ller]     ...
Modules|-- manifests         |-- lib| |-- api.pp          | `-- puppet| |-- compute         |       |-- provider| | |-- kv...
OpenStack Modules•   nova           •   rabbitmq•   swift          •   mysql•   glance         •   memcache•   keystone   ...
Interested in contributing?•   git clone --recurse git://github.com/puppetlabs/    puppetlabs-openstack•   compose manifes...
Upcoming SlideShare
Loading in …5
×

Openstack presentation

2,337 views

Published on

Puppet presentation at

Published in: Technology, Business
  • Be the first to comment

Openstack presentation

  1. 1. Puppet by Dan Bodebodepd <at > [‘freenode.net’, ‘twitter’, ‘github’]
  2. 2. About MeIntegration specialist at PuppetLabs Puppet expert/Ruby developerPython Newbie/OpenStack newbie
  3. 3. What is Puppet?• Declarative configuration language• Declares desired configuration state• Performs configuration as state changes• Encapsulates configuration as higher level interfaces
  4. 4. Puppet’s modelcurrent desired state state ==? Sync Event
  5. 5. Resources describe state current desired package {‘git’: ensure => present, state state } ==? Sync Event
  6. 6. Providers detect current staterpm -q git current desired package {‘git’: ensure => present,dpkg-query --search state state }git ==? Sync Event
  7. 7. Puppet comparesrpm -q git current desired package {‘git’: ensure => present,dpkg-query --search state state }git present absent != Sync Event
  8. 8. Providers remediaterpm -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. 9. Reports maintained for state changesrpm -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. 10. Noop Moderpm -q git current desired package {‘git’: ensure => present,dpkg-query --search state state }git present absent != desired state transition: Event absent -> present
  11. 11. FacterSystem specific key value pairs:architecture => i386ipaddress => 192.168.0.4macaddress => aa:cc:99:bb:50:a3operatingsystem => Darwinoperatingsystemrelease => 10.3.2
  12. 12. FacterSystem specific key value pairs:architecture => i386ipaddress => 192.168.0.4macaddress => aa:cc:99:bb:50:a3operatingsystem => Darwinoperatingsystemrelease => 10.3.2# customizablemy_openstack_cluser => cluster_onemy_openstack_role => swift_storage
  13. 13. Common Resource Types Types == Interfaces• package• service • exec• file • host• user• group
  14. 14. Common Resource Providers Providers == Implementations• Package providers: • rpm • yum • apt• Service Providers • init • systemd • upstart
  15. 15. Custom Resource Types• database • nova_config• database_user • keystone_user• database_grant • nova_network• rabbitmq_user • keystone_tenant• rabbitmq_vhost • ......
  16. 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. 17. Compose Nodes from Classes Node[nova_contro Node[nova_compu ller] te1] Node[nova_compumysql::server rabbit::queue te2] nova::compute::libvirt glance::api Node[nova_compu keystone nova::api te3] nova::compute::libvirt Node[nova_compunova::network::flatdhcp glance::registry te4] nova::compute::libvirt nova::compute::libvirt memcached nova::scheduler horizon
  18. 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. 19. OpenStack Modules• nova • rabbitmq• swift • mysql• glance • memcache• keystone • apt• horizon • concat • ntp • rsync • stdlib • xinetd
  20. 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/...

×