Packstack
Derek Higgins
Senior Software Engineer
Red Hat
Packstack
A utility that uses Puppet modules to deploy
various parts of OpenStack on multiple pre-
installed servers over ...
RDO
a freely-available, community-supported
distribution of OpenStack that runs on Red
Hat Enterprise Linux, Fedora, and t...
RDO
● Makes it easy to install and deploy the most up-
to-date OpenStack components.
● Packages Openstack components and v...
Packstack
1. sudo yum install -y http://...
2. sudo yum install -y openstack-packstack
3. packstack --allinone
or
3. packs...
Overview
● Python
user interactions
parsing answerfile
generate puppet manifests
coordinate puppet tasks
● ssh (multiple h...
Packstack Plugins
● One per component
● Responsible for
● Registering config directives
● Minimal script on hosts
● Genera...
Nova plugin : Config Directives
{"CMD_OPTION": "novaconductor-host",
"USAGE" : "The IP address of the server on which to i...
Nova plugin : Config Directives
{"CMD_OPTION": "nova-db-passwd",
"USAGE" : "The password to use for the Nova to access DB"...
Nova plugin : script
server = utils.ScriptRunner(host)
cmd = "ip addr show dev %s"
server.append(cmd % (device, device))
s...
Nova plugin : puppet manifest
def createkeystonemanifest(config):
manifestfile = "%s_keystone.pp"%controller.CONF['CONFIG_...
Puppet plugin : applying modules
● Copy modules and manifests to all hosts
● Apply groups of manifests in parallel
● Don't...
Puppet modules used
● Stackforge Modules
● cinder glance horizon keystone neutron nova
openstack swift
● Other
● apache co...
MySQL
● Create Users
● Create Databases
● Configure Access
Keystone
● PKI default token format
● Admin / Demo / Per Service users
● Services / Endpoints created
● Compulsory Service
Glance
● Api / Registry same host
● Populated with cirros image
Nova
● Controller / Service per Host
● 1+ nova compute hosts
● libvirt kvm / qemu
● tunes compute nodes (virtual-host prof...
Networking
● nova FlatDHCP
● nova VLAN
● Neutron
● L2 plugins
● Linuxbridge
● openvswitch
● Namespace enabled kernel
Cinder
● Backends :
● lvm/iscsi
● gluster (havana)
● nfs
● Lvm/iscsi Creates Sample 20G cinder-
volumes VG
● Volume/Schedu...
Swift
● Single proxy
● Multiple storage hosts
● Multiple storage devices
● Configurable ring
Horizon
● Http / Https options
os-client
● Client libraries / cli's installed
● Admin and demo rc files
Nagios
● Nrpe
● Monitors
● Load
● disk usage (/var)
● Keystone
● Glance
● Nova
● Cinder
● Swift
Other
● Iptables Filters
● sebools
Coming Soon
● Heat
● Ceilometer
More Info
● Packstack --help
● http://openstack.redhat.com/
● http://openstack.redhat.com/Quickstart
● https://github.com/...
Upcoming SlideShare
Loading in …5
×

Making a Robust Installer for Linux Server Applications with Puppet Modules

4,081 views

Published on

This session will describe how puppet is used in Packstack, where we are using puppet as part of a run once installer, to deploy OpenStack in a distributed environment. During this talk we will discuss the benefits and pitfalls of applying puppet manifests to deploy OpenStack.

Derek Higgins
Senior Software Engineer, Red Hat
Working in Red Hat Derek's main focus has been on OpenStack Deployments, where he uses Puppet and Foreman to deploy OpenStack. Derek also started the packstack install utility which applies puppet manifests to setup OpenStack in a multi host environment. Derek is still relatively new to puppet but is eager to learn all of the features it has to offer.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,081
On SlideShare
0
From Embeds
0
Number of Embeds
2,118
Actions
Shares
0
Downloads
49
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Making a Robust Installer for Linux Server Applications with Puppet Modules

  1. 1. Packstack Derek Higgins Senior Software Engineer Red Hat
  2. 2. Packstack A utility that uses Puppet modules to deploy various parts of OpenStack on multiple pre- installed servers over SSH.
  3. 3. RDO a freely-available, community-supported distribution of OpenStack that runs on Red Hat Enterprise Linux, Fedora, and their derivatives.
  4. 4. RDO ● Makes it easy to install and deploy the most up- to-date OpenStack components. ● Packages Openstack components and versions of their dependencies that are known to work together. ● Provides you with installation tools to simplify Openstack installation
  5. 5. Packstack 1. sudo yum install -y http://... 2. sudo yum install -y openstack-packstack 3. packstack --allinone or 3. packstack --gen-answer-file
  6. 6. Overview ● Python user interactions parsing answerfile generate puppet manifests coordinate puppet tasks ● ssh (multiple hosts) ● puppet puppet apply - in series on each host - multiple hosts done in parallel (where possible) ● RDO Openstack packages
  7. 7. Packstack Plugins ● One per component ● Responsible for ● Registering config directives ● Minimal script on hosts ● Generating puppet manifest
  8. 8. Nova plugin : Config Directives {"CMD_OPTION": "novaconductor-host", "USAGE" : "The IP address of the server on which to install the Nova Conductor service", "PROMPT": "Enter the IP address of the Nova Conductor service", "OPTION_LIST" : [], "VALIDATORS": [validators.validate_ip, validators.validate_ssh], "DEFAULT_VALUE" : utils.get_localhost_ip(), "MASK_INPUT": False, "LOOSE_VALIDATION": True, "CONF_NAME" : "CONFIG_NOVA_CONDUCTOR_HOST", "USE_DEFAULT" : False, "NEED_CONFIRM": False, "CONDITION" : False },
  9. 9. Nova plugin : Config Directives {"CMD_OPTION": "nova-db-passwd", "USAGE" : "The password to use for the Nova to access DB", "PROMPT": "Enter the password for the Nova DB access", "OPTION_LIST" : [], "VALIDATORS": [validators.validate_not_empty], "DEFAULT_VALUE" : uuid.uuid4().hex[:16], "MASK_INPUT": True, "LOOSE_VALIDATION": False, "CONF_NAME" : "CONFIG_NOVA_DB_PW", "USE_DEFAULT" : True, "NEED_CONFIRM": True, "CONDITION" : False },
  10. 10. Nova plugin : script server = utils.ScriptRunner(host) cmd = "ip addr show dev %s" server.append(cmd % (device, device)) server.execute()
  11. 11. Nova plugin : puppet manifest def createkeystonemanifest(config): manifestfile = "%s_keystone.pp"%controller.CONF['CONFIG_KEYSTONE_HOST'] manifestdata = getManifestTemplate("keystone_nova.pp") appendManifestFile(manifestfile, manifestdata) class {"nova::keystone::auth": password => "%(CONFIG_NOVA_KS_PW)s", public_address => "%(CONFIG_NOVA_API_HOST)s", admin_address => "%(CONFIG_NOVA_API_HOST)s", internal_address => "%(CONFIG_NOVA_API_HOST)s", cinder => true, } keystone_nova.pp
  12. 12. Puppet plugin : applying modules ● Copy modules and manifests to all hosts ● Apply groups of manifests in parallel ● Don't run in parallel on same hosts ● Monitor for log file ● Search log file for errors ● Continue to next group of manifests
  13. 13. Puppet modules used ● Stackforge Modules ● cinder glance horizon keystone neutron nova openstack swift ● Other ● apache concat firewall inifile memcached mysql qpid rsync ssh stdlib sysctl vlan xinetd
  14. 14. MySQL ● Create Users ● Create Databases ● Configure Access
  15. 15. Keystone ● PKI default token format ● Admin / Demo / Per Service users ● Services / Endpoints created ● Compulsory Service
  16. 16. Glance ● Api / Registry same host ● Populated with cirros image
  17. 17. Nova ● Controller / Service per Host ● 1+ nova compute hosts ● libvirt kvm / qemu ● tunes compute nodes (virtual-host profile)
  18. 18. Networking ● nova FlatDHCP ● nova VLAN ● Neutron ● L2 plugins ● Linuxbridge ● openvswitch ● Namespace enabled kernel
  19. 19. Cinder ● Backends : ● lvm/iscsi ● gluster (havana) ● nfs ● Lvm/iscsi Creates Sample 20G cinder- volumes VG ● Volume/Scheduler/API same host only
  20. 20. Swift ● Single proxy ● Multiple storage hosts ● Multiple storage devices ● Configurable ring
  21. 21. Horizon ● Http / Https options os-client ● Client libraries / cli's installed ● Admin and demo rc files
  22. 22. Nagios ● Nrpe ● Monitors ● Load ● disk usage (/var) ● Keystone ● Glance ● Nova ● Cinder ● Swift
  23. 23. Other ● Iptables Filters ● sebools Coming Soon ● Heat ● Ceilometer
  24. 24. More Info ● Packstack --help ● http://openstack.redhat.com/ ● http://openstack.redhat.com/Quickstart ● https://github.com/stackforge/packstack ● Me ● Email : derekh@redhat.com ● Twitter : @bethehokie ● Freenode : derekh

×