openstack havana
DESCRIPTION
presentation used at the puppet build an openstack labTRANSCRIPT
Lets build an OpenStack!
Dan Bode@bodepd
‘doer of things’ at PuppetLabs
Thursday, April 18, 13
Connect to our network
• SSID: puppet_openstack
• We’ll bridge you to the outside world from here (please respect our pipes)
Thursday, April 18, 13
Dependencies
• Ruby (we assume its already installed)
• VirtualBox
• Ubuntu precise base box
• Vagrant
• Puppet modules
Thursday, April 18, 13
• download requirements:
• http://10.0.1.2/share/
• virtual_box/VirtualBox-.4.2.10.dmg
• precise64.box
• puppet-openstack_dev_env.tgz
• vagrant/Vagrant.dmg
Thursday, April 18, 13
• unpack the modules
• tar -xzvf puppet-openstack_dev_env.tgz
Thursday, April 18, 13
• vagrant box add precise64 precise64.box
Thursday, April 18, 13
• double check the proxy settings
• manifests/pre.pp
• manifests/setup/precise64.pp
Thursday, April 18, 13
• vagrant up openstack_controller
Thursday, April 18, 13
• vagrant up compute1
Thursday, April 18, 13
• vagrant ssh openstack_controller
• bash /tmp/test_nova.sh
• source /root/openrc
Thursday, April 18, 13
The Goal
Thursday, April 18, 13
The Goal:
Your LaptopStart with your laptop
Thursday, April 18, 13
The Goal:
Your Laptop
Virtual BoxInstall VBox
Thursday, April 18, 13
The Goal:
Your Laptop
Virtual Box
VagrantInstall vagrant
Thursday, April 18, 13
The Goal:
Your Laptop
Virtual Box
Vagrant
VM1 VM2Define/Boot 2 VMs with
Vagrant
Thursday, April 18, 13
The Goal:
Your Laptop
Virtual Box
Vagrant
Puppet
VM1 VM2
Run Puppet on those VMs
Thursday, April 18, 13
Vagrant (Vagrantfile)
Your Laptop
Virtual Box
Vagrant
VM1 VM2
Thursday, April 18, 13
Librarian Puppet (Puppetfile)
Your Laptop
Virtual Box
Vagrant
Puppet
VM1 VM2
Thursday, April 18, 13
Puppetfile
mod 'puppetlabs/openstack', :git => 'git://github.com/stackforge/puppet-openstack'mod 'puppetlabs/nova', :git => 'git://github.com/stackforge/puppet-nova'mod 'puppetlabs/glance', :git => 'git://github.com/stackforge/puppet-glance'mod 'puppetlabs/keystone', :git => 'git://github.com/stackforge/puppet-keystone'mod 'puppetlabs/horizon', :git => 'git://github.com/stackforge/puppet-horizon'mod 'puppetlabs/swift', :git => 'git://github.com/stackforge/puppet-swift'mod 'puppetlabs/cinder', :git => 'git://github.com/stackforge/puppet-cinder'mod 'puppetlabs/tempest', :git => 'git://github.com/puppetlabs/puppetlabs-tempest'mod 'puppet/quantum', :git => 'git://github.com/bodepd/puppet-quantum/'# openstack middlewaremod 'puppet/vswitch', :git => 'git://github.com/ekarlso/puppet-vswitch'mod 'puppetlabs/rabbitmq', :git => 'git://github.com/puppetlabs/puppetlabs-rabbitmq'mod 'puppetlabs/mysql', :git => 'git://github.com/puppetlabs/puppetlabs-mysql'mod 'puppetlabs/git', :git => 'git://github.com/puppetlabs/puppetlabs-git'mod 'puppetlabs/vcsrepo', :git => 'git://github.com/puppetlabs/puppetlabs-vcsrepo'mod 'saz/memcached', :git => 'git://github.com/saz/puppet-memcached'mod 'puppetlabs/rsync', :git => 'git://github.com/puppetlabs/puppetlabs-rsync'.......
forge "http://forge.puppetlabs.com"
mod 'puppetlabs/openstack', :git => 'git://github.com/stackforge/puppet-openstack'
mod 'puppetlabs/nova', :git => 'git://github.com/stackforge/puppet-nova'
mod 'puppetlabs/glance', :git => 'git://github.com/stackforge/puppet-glance'
mod 'puppetlabs/keystone', :git => 'git://github.com/stackforge/puppet-keystone'
mod 'puppetlabs/horizon', :git => 'git://github.com/stackforge/puppet-horizon'
mod 'puppetlabs/swift', :git => 'git://github.com/stackforge/puppet-swift'
mod 'puppetlabs/cinder', :git => 'git://github.com/stackforge/puppet-cinder'
mod 'puppetlabs/tempest', :git => 'git://github.com/puppetlabs/puppetlabs-tempest'
mod 'puppet/quantum', :git => 'git://github.com/bodepd/puppet-quantum/'
# openstack middlewaremod 'puppet/vswitch', :git => 'git://github.com/ekarlso/
puppet-vswitch'mod 'puppetlabs/rabbitmq', :git => 'git://github.com/
puppetlabs/puppetlabs-rabbitmq'mod 'puppetlabs/mysql', :git => 'git://github.com/puppetlabs/
puppetlabs-mysql'mod 'puppetlabs/git', :git => 'git://github.com/puppetlabs/
puppetlabs-git'mod 'puppetlabs/vcsrepo', :git => 'git://github.com/
puppetlabs/puppetlabs-vcsrepo'mod 'saz/memcached', :git => 'git://github.com/saz/puppet-
memcached'mod 'puppetlabs/rsync', :git => 'git://github.com/puppetlabs/
puppetlabs-rsync'mod 'puppetlabs/apache', :git => 'git://github.com/
puppetlabs/puppetlabs-apache', :ref => '94ebca3aaaf2144a7b9ce7ca6a13837ec48a7e2a'
# other depsmod 'puppetlabs/xinetd', :git => 'git://github.com/
puppetlabs/puppetlabs-xinetd'mod 'saz/ssh', :git => 'git://github.com/saz/puppet-ssh'
mod 'saz/sudo', :git => 'git://github.com/saz/puppet-sudo'mod 'puppetlabs/stdlib', :git => 'git://github.com/puppetlabs/
puppetlabs-stdlib'mod 'puppetlabs/apt', :git => 'git://github.com/puppetlabs/
puppetlabs-apt'mod 'puppetlabs/firewall', :git => 'git://github.com/
puppetlabs/puppetlabs-firewall'mod 'ripienaar/concat', :git => 'git://github.com/ripienaar/
puppet-concat'mod 'duritong/sysctl', :git => 'git://github.com/duritong/
puppet-sysctl.git'mod 'cprice404/inifile', :git => 'git://github.com/cprice-
puppet/puppetlabs-inifile'# puppet related modules
mod 'ripienaar/hiera_puppet', :git => 'https://github.com/ripienaar/hiera-puppet'mod 'puppetlabs/ruby'
mod 'puppet/puppet', :git => 'git://github.com/stephenrjohnson/puppetlabs-puppet.git', :ref => '6244079f8ce37901a167f45fadd5d9cc055f83db'
mod 'puppetlabs/puppetdb', :git => 'git://github.com/bodepd/puppetlabs-puppetdb.git'
mod 'puppetlabs/postgresql', :git => 'git://github.com/bodepd/puppet-postgresql.git'
mod 'ripienaar/ruby-puppetdb', :git => 'git://github.com/ripienaar/ruby-puppetdb'
Thursday, April 18, 13
Site Manifests (manifest/site.pp)
Thursday, April 18, 13
Specify how nodes map to roles
node /openstack-controller/ {....}
node /compute/ {...}
Thursday, April 18, 13
Hiera (external hierarchical data lookup)
Node
CI
Common
Node Node Node
EU
Default
Node Node
US
Thursday, April 18, 13
check out hiera_data/
hiera_data/common.yamlhiera_data/jenkins.yamlhiera_data/NODE.yaml
Thursday, April 18, 13
The OpenStack Module
Thursday, April 18, 13
Specifies high level roles that are very opinionated about how to install openstack
openstack::allopenstack::controlleropenstack::computeopenstack::keystoneopenstack::db::mysql
Thursday, April 18, 13
High Level Configuration Interfaces
class { 'openstack::all': public_address => $ipaddress_eth0, public_interface => $public_interface, private_interface => $private_interface, admin_email => $admin_email, admin_password => $admin_password, keystone_db_password => $keystone_db_password, keystone_admin_token => $keystone_admin_token, nova_db_password => $nova_db_password, nova_user_password => $nova_user_password, glance_db_password => $glance_db_password, glance_user_password => $glance_user_password, rabbit_password => $rabbit_password, rabbit_user => $rabbit_user, libvirt_type => 'kvm', floating_range => $floating_network_range, fixed_range => $fixed_network_range, verbose => $verbose, auto_assign_floating_ip => $auto_assign_floating_ip, }
Thursday, April 18, 13
The ‘Core’ Modules
Thursday, April 18, 13
• nova
• swift
• glance
• keystone
• horizon
• openstack
• cinder
• quantum
• ceilometer
Thursday, April 18, 13
Helper Modules
Thursday, April 18, 13
• rabbitmq
• mysql
• memcache
• apt
• concat
• ntp
• rsync
• stdlib
• xinetd
• openvswitch
• apache
Thursday, April 18, 13
Stackforge
• modules have been upstreamed to stackforge
• follow openstack development process
Thursday, April 18, 13