0
Deploying OpenStack with Puppet
who is this talk for?- the reasonably technical- already understands config management- wants to learn more about using Pu...
Shameless plug
What is Puppet?
Resources describe state                               Current          Desired       package {‘git’:                     ...
Providers Detect Current Staterpm -q git                                   Current          Desired       package {‘git’: ...
Puppet comparesrpm -q git                                   Current          Desired       package {‘git’:                ...
Provides remediaterpm -q git                                   Current          Desired       package {‘git’:             ...
Providers Remediaterpm -q git                                   Current          Desired       package {‘git’:            ...
Noop Moderpm -q git                                   Current          Desired       package {‘git’:                      ...
Puppet DSL composes resources    class keystone(     $admin_token,    ){        package { keystone:          ensure => pre...
Why Integrate?
OpenStack is hard to build reliably, repeatedly
OpenStack is hard
OpenStack makes it easier to automate the management   of compute resources   Puppet                  Your BusinessOpenSta...
OpenStack makes it easier to automate the management   of compute resources                                    You   Puppe...
Puppet can be used to codify best practices for OpenStack                 OpenStackios                     Now with best p...
The modules
OpenStack modules  •   nova  •   swift  •   glance  •   keystone  •   horizon  •   openstack  •   quantum  •   cinder
General purpose modules•   rabbitmq•   mysql•   memcache•   apt•   concat•   ntp•   rsync•   stdlib•   xinetd•   openvswit...
Each module has classes that present configuration interfaces  glance            class { glance::api:              auth_po...
OpenStack - higher level roles      class { openstack::db::mysql:        ....      }      class { ‘openstack::keystone’:  ...
2 role deployments           node /openstack-controller/ {             class { openstack::controller:               ....  ...
Getting Started
Download repogit clone https://github.com/puppetlabs/puppetlabs-openstack_dev_env
Install modules> gem install librarian-puppet> cd puppetlabs-openstack_dev_env> librarian-puppet installOnce it’s released...
Example site     manifest> vi manifests/site.pp
Node declarationsReview now nodes can be classified:node /openstack-controller/ {....}node /compute/ {...}
Modify top scope     variables...$cinder_user_password = cinder_user_password$quantum_user_password = quantum_user_passwor...
install openstack      host1# puppet agent -t --certname openstack-      controller      host2# puppet agent -t --certname...
log into controller      > ssh openstack-controller      > source /root/openrc
Run basic test script:       > bash /tmp/test_nova.sh
Advanced
Or use hiera     (maybe I should     switch?)$cinder_user_password = hiera(cinder_user_password)$quantum_user_password = h...
Or use an ENC
PuppetDB* stores facts and catalog* search for nodes* find facts for nodes* find resources from nodes
Upcoming SlideShare
Loading in...5
×

Openstack grizzley puppet_talk

1,376

Published on

slides for puppet-openstack workshop

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,376
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
96
Comments
0
Likes
1
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
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Transcript of "Openstack grizzley puppet_talk"

    1. 1. Deploying OpenStack with Puppet
    2. 2. who is this talk for?- the reasonably technical- already understands config management- wants to learn more about using Puppet modules to deployopenstack
    3. 3. Shameless plug
    4. 4. What is Puppet?
    5. 5. Resources describe state Current Desired package {‘git’: ensure => present, State State } != Sync Event| CONFIDENTIAL & PROPRIETARY
    6. 6. Providers Detect Current Staterpm -q git Current Desired package {‘git’: ensure => present,dpkg-query --searchgit State State } != Sync Event | CONFIDENTIAL & PROPRIETARY
    7. 7. Puppet comparesrpm -q git Current Desired package {‘git’: ensure => present,dpkg-query --searchgit State State } Absent != Present Sync Event | CONFIDENTIAL & PROPRIETARY
    8. 8. Provides remediaterpm -q git Current Desired package {‘git’: ensure => present,dpkg-query --searchgit State State } Absent != Present yum install git Sync Event apt-get install git | CONFIDENTIAL & PROPRIETARY
    9. 9. Providers Remediaterpm -q git Current Desired package {‘git’: ensure => present,dpkg-query --searchgit State State } Absent != Present yum install git state transition: Sync Event absent -> present apt-get install git | CONFIDENTIAL & PROPRIETARY
    10. 10. Noop Moderpm -q git Current Desired package {‘git’: ensure => present,dpkg-query --searchgit State State } Absent != Present state transition: Sync Event absent -> present | CONFIDENTIAL & PROPRIETARY
    11. 11. Puppet DSL composes resources class keystone( $admin_token, ){ package { keystone: ensure => present, } keystone_config { DEFAULT/admin_token: value => $admin_token, require => Package[‘keystone’], notify => Service[‘keystone’], } service { keystone: ensure => running, } }| CONFIDENTIAL & PROPRIETARY
    12. 12. Why Integrate?
    13. 13. OpenStack is hard to build reliably, repeatedly
    14. 14. OpenStack is hard
    15. 15. OpenStack makes it easier to automate the management of compute resources Puppet Your BusinessOpenStack Configuration Management Self Service API Hardware
    16. 16. OpenStack makes it easier to automate the management of compute resources You Puppet Your BusinessOpenStack Configuration Management Self Service API Hardware http://www.happyemrdoctor.com/files/2011/02/HappyComputerMan.gif
    17. 17. Puppet can be used to codify best practices for OpenStack OpenStackios Now with best practices by: CERN, Enovance, Cisco Redhat, Cybera
    18. 18. The modules
    19. 19. OpenStack modules • nova • swift • glance • keystone • horizon • openstack • quantum • cinder
    20. 20. General purpose modules• rabbitmq• mysql• memcache• apt• concat• ntp• rsync• stdlib• xinetd• openvswitch• apache
    21. 21. Each module has classes that present configuration interfaces glance class { glance::api: auth_port => 35357, auth_host => ‘keystone_host’, keystone_tenant => services, keystone_user => glance, keystone_password => pass, } class { glance::registry: ... }
    22. 22. OpenStack - higher level roles class { openstack::db::mysql: .... } class { ‘openstack::keystone’: .... } class { openstack::glance: ... } class { ‘openstack::horizon’ } class { ‘openstack::nova::controller’ { }
    23. 23. 2 role deployments node /openstack-controller/ { class { openstack::controller: .... } } node /compute/ { class { ‘openstack::compute’: ... } }
    24. 24. Getting Started
    25. 25. Download repogit clone https://github.com/puppetlabs/puppetlabs-openstack_dev_env
    26. 26. Install modules> gem install librarian-puppet> cd puppetlabs-openstack_dev_env> librarian-puppet installOnce it’s released to the forge> puppet module install puppetlabs-openstack
    27. 27. Example site manifest> vi manifests/site.pp
    28. 28. Node declarationsReview now nodes can be classified:node /openstack-controller/ {....}node /compute/ {...}
    29. 29. Modify top scope variables...$cinder_user_password = cinder_user_password$quantum_user_password = quantum_user_password$verbose = True$public_interface = eth1$private_interface = eth2$rabbit_password = rabbit_password$rabbit_user = nova...
    30. 30. install openstack host1# puppet agent -t --certname openstack- controller host2# puppet agent -t --certname compute
    31. 31. log into controller > ssh openstack-controller > source /root/openrc
    32. 32. Run basic test script: > bash /tmp/test_nova.sh
    33. 33. Advanced
    34. 34. Or use hiera (maybe I should switch?)$cinder_user_password = hiera(cinder_user_password)$quantum_user_password = hiera(quantum_user_password)$verbose = True$public_interface = hiera(public_interface)$private_interface = hiera(private_interface)$rabbit_password = hiera(rabbit_password)
    35. 35. Or use an ENC
    36. 36. PuppetDB* stores facts and catalog* search for nodes* find facts for nodes* find resources from nodes
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×