Mais conteúdo relacionado Puppet + OpenStack: Presentation from OpenStack Summit 4/16/20121. Puppet
by Dan Bode
bodepd <at > [‘freenode.net’, ‘twitter’, ‘github’]
3. What is Puppet?
• Declarative configuration language
• Declares desired configuration state
• Performs configuration as state changes
• Encapsulates configuration as higher level
interfaces
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
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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n