In this talk, the foreman_setup and foreman_openstack_cluster plugins will be introduced for deploying RDO OpenStack in various configurations. With these, we can use Foreman for the entire installation - from provisioning the host OS, to OpenStack itself and then VMs on top.
Long journey of Ruby standard library at RubyConf AU 2024
Deploying RDO OpenStack with a pair of plugins
1. Deploying RDO OpenStack
with a pair of plugins
Dominic Cleal
dcleal@redhat.com
4th February 2014
Greg Sutcliffe
gsutclif@redhat.com
2. Agenda
●
Introduction to RDO
●
How Foreman helps in RDO
●
Current state of astapor
●
Splitting up the problem domain
●
Introducing foreman_setup
●
Introducing foreman_openstack_cluster
●
How to proceed
OpenStack deployment | 2 | Dominic Cleal & Greg Sutcliffe
3. RDO: OpenStack's Fedora
●
●
●
●
RDO is a Red Hat sponsored project to help
users deploy an OpenStack distribution on EL
and Fedora derivatives
It serves as the base for RHEL OpenStack
Platform
Releases are timed after major upstream
OpenStack releases
PackStack or Foreman are deployment options
OpenStack deployment | 3 | Dominic Cleal & Greg Sutcliffe
4. How Foreman helps in RDO
●
Three host setup:
–
–
●
OpenStack controller host
–
●
Foreman and Puppet master host
OpenStack compute host(s)
One internal/provisioning network, two
OpenStack networks (public/private)
Foreman provisions controller and compute
hosts over the provisioning network
OpenStack deployment | 4 | Dominic Cleal & Greg Sutcliffe
5. Current state of astapor
●
astapor is the upstream name of openstackforeman-installer
–
●
https://github.com/redhat-openstack/astapor/
Comprises mostly of:
–
foreman_server.sh
–
seeds.rb
–
foreman_client.sh
–
quickstack
OpenStack deployment | 5 | Dominic Cleal & Greg Sutcliffe
6. astapor: foreman_server, seeds
●
●
●
foreman_server.sh is a thin wrapper around
foreman-installer (it runs Puppet directly)
Provisioning and non-provisioning modes with
env vars to configure subnet data
Seeds sets up an OS, kickstart templates,
subnet, domain, associations
OpenStack deployment | 6 | Dominic Cleal & Greg Sutcliffe
7. astapor: quickstack, seeds
●
●
●
●
●
quickstack is a Puppet module with roles built on top of
the stackforge modules
It defines controllers, in various types – different
networking, storage and HA combinations
seeds.rb populates host groups in Foreman
corresponding to these roles
e.g. “Controller Neutron” host group includes the
quickstack::neutron::controller Puppet class
seeds.rb populates default values on Puppet class
parameters using sensible values and values derived
from user settings
OpenStack deployment | 7 | Dominic Cleal & Greg Sutcliffe
8. Splitting up the problem domain
●
Problem A: foreman-installer clearly doesn't
adequately solve complete, all-in-one
provisioning setups in an easy manner
–
●
Not specific to OpenStack
Problem B: data input for class parameters is
repetitive and varies depending on user
settings
–
Modules and parameters are specific to OpenStack,
but this is a general problem
OpenStack deployment | 8 | Dominic Cleal & Greg Sutcliffe
9. Introducing foreman_setup
●
foreman_setup is a plugin that adds a wizard
for configuration of provisioning prerequisites
●
Prompts for subnet and domain data
●
Shows appropriate foreman-installer command
●
●
Sets up the OS, provisioning templates,
installation media, Spacewalk parameters
Creates a host group with configured OS,
subnet, domain all associated
OpenStack deployment | 9 | Dominic Cleal & Greg Sutcliffe
11. Introducing
foreman_openstack_cluster
●
●
●
●
The plugin adds a new UI around host group
creation, specifically based on quickstack
Puppet classes
Prompts for OpenStack-specific parameters,
e.g. internal and external network data
Hides advanced parameters and automatically
generates passwords
It can build on top of a parent host group, such
as the one created by foreman_setup
OpenStack deployment | 11 | Dominic Cleal & Greg Sutcliffe
13. How to proceed
●
●
●
●
foreman_setup to be installed by default with
foreman-installer, our recommended route for
configuring provisioning
foreman_openstack_cluster needs a refresh
Should this be a generic mechanism to expand
to other projects? Is that technically feasible?
How to better handle permutations of plugins,
replacing the quickstack layer?
OpenStack deployment | 13 | Dominic Cleal & Greg Sutcliffe