This repository provides Puppet recipes for OpenStack (with some helper modules) I wrote. Since OpenStack is really complex to set up (especially when you're new to OpenStack), I want to share my findings.
Write your own role classes, to be included by your nodes, for example:
# this is the base class to define some common shared variables,
# that are used in templated configuration files,
# which define your specific environment.
class role_openstack_defines {
$openstack_admin_tenant_name = "mycloud"
$openstack_admin_username = "admin"
$openstack_admin_password = "mYsecretPwe3"
$openstack_glance_dbname = "glance"
$openstack_glance_dbusername = "glancedbadmin"
$openstack_glance_dbpassword = "mYsecreht0therPw"
$openstack_nova_dbname = "nova"
$openstack_nova_dbusername = "novadbadmin"
$openstack_nova_dbpassword = "even-more-secret"
$openstack_cc_ipaddr = $::ipaddress_eth0
$openstack_db_ipaddr = $openstack_cc_ipaddr
# this points to the public IP address of your *central* nova-network node
$openstack_network_gw_public_ipaddr = "42.716.540.911"
}
class role_openstack_controller {
# this class pulls all-in-one all required pieces for a central controller node in
include openstack::controller
# also install the Horizon dashboard on the controller node (for ease of setup)
include openstack::dashboard
}
class role_openstack_compute {
include openstack::keystone::client
include openstack::glance::client
include openstack::nova::client
include openstack::nova::compute
}
... to come.
Please remember, that, since OpenStack is highly customizable, these Recipes may not be what you are looking for. However, I try to make them as easy and usable as possible. In my setup, I am having one central controller node, and a dedicated nova-network node, both to be HA'd via Corosync/Pacemaker (recipes will be upgraded, in necessary).