Openstack grizzley puppet_talk

1,771 views

Published on

slides for puppet-openstack workshop

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

No Downloads
Views
Total views
1,771
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
98
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
  • 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

    ×