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

2,753 views

Published on

www.puppetlabs.com/solutions/openstack/

Published in: Technology, Business
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,753
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
103
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Puppet + OpenStack: Presentation from OpenStack Summit 4/16/2012

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

    ×