134 lines
5.6 KiB
ReStructuredText
134 lines
5.6 KiB
ReStructuredText
TripleO Overcloud deployment with Puppet
|
|
========================================
|
|
|
|
Intro
|
|
-----
|
|
|
|
This document outlines how to deploy a TripleO overcloud using Puppet
|
|
for configuration. TripleO currently supports using Puppet for configuration
|
|
using Heat metadata directly via the normal os-collect-config/os-refresh-config
|
|
agents. No puppet-master or puppet DB infrastructure is required.
|
|
|
|
Building Images
|
|
---------------
|
|
When building TripleO images for use with Puppet the following elements
|
|
should be installed:
|
|
|
|
- ``hosts``
|
|
- ``os-net-config``
|
|
- ``os-collect-config``
|
|
- ``heat-config-puppet``
|
|
- ``puppet-modules``
|
|
- ``hiera``
|
|
|
|
The ``hosts`` and ``os-net-config`` are normal TripleO image elements and are still
|
|
used to deploy basic physical networking configuration required to bootstrap
|
|
the node.
|
|
|
|
The ``os-collect-config``, and ``heat-config-puppet`` elements provide mechanism
|
|
to run ``puppet apply`` commands that have been configured via Heat software
|
|
deployment configurations.
|
|
|
|
The ``puppet-modules`` element installs all of the required ``stackforge
|
|
puppet-*`` modules. This element has two modes of operation: package or source
|
|
installs. The package mode assumes that all of the required modules exist in
|
|
a single distribution provided package. The source mode deploys the puppet
|
|
modules from Git at image build time and automatically links them into
|
|
``/etc/puppet/modules``. The source mode makes use of source repositories so
|
|
you can, for example, pin to a specific ``puppetlabs-mysql`` module version by setting::
|
|
|
|
DIB_REPOREF_puppetlabs_mysql=<GIT COMMIT HASH>
|
|
|
|
The ``hiera`` element provides a way to configure the hiera.yaml and hieradata
|
|
files on each node directly via Heat metadata. The ``tripleo-heat-templates``
|
|
are used to drive this configuration.
|
|
|
|
When building images for use with Puppet it is important to note that
|
|
regardless of whether you use source or package mode to install these core
|
|
elements the actual OpenStack service packages (Nova, Neutron, Keystone, etc)
|
|
will need to be installed via normal distro packages. This is required in
|
|
order to work with the stackforge puppet modules.
|
|
|
|
The OpenStack service packages can be installed at DIB time via the -p
|
|
option or at deployment time when Puppet is executed on each node.
|
|
|
|
Heat Templates
|
|
--------------
|
|
|
|
When deploying an overcloud with Heat only the newer
|
|
``overcloud-without-mergepy.yaml`` supports Puppet. To enable Puppet simply use
|
|
the ``overcloud-resource-registry-puppet.yaml`` instead of the normal
|
|
``overcloud-resource-registry.yaml`` with your Heat ``stack-create`` command.
|
|
|
|
Running Devtest Overcloud with Delorean on Fedora
|
|
-------------------------------------------------
|
|
|
|
This section describes the variables required in order to run
|
|
``devtest_overcloud.sh`` with Puppet. It assumes you have a fully working
|
|
TripleO undercloud (or seed) which has been preconfigured to work
|
|
in your environment.
|
|
|
|
.. note::
|
|
|
|
The following instructions assume this pre-existing config from a normal devtest Fedora setup::
|
|
|
|
export NODE_DIST='fedora selinux-permissive'
|
|
export DIB_RELEASE=21
|
|
export RDO_RELEASE=kilo
|
|
|
|
# Enable packages for all elements by default
|
|
export DIB_DEFAULT_INSTALLTYPE=package
|
|
|
|
# Do not manage /etc/hosts via cloud-init
|
|
export DIB_CLOUD_INIT_ETC_HOSTS=''
|
|
|
|
# Set ROOT_DISK == NODE_DISK (no ephemeral partition)
|
|
export ROOT_DISK=40
|
|
export NODE_DISK=40
|
|
|
|
By default TripleO uses puppet for configuration only. Packages (RPMs, etc)
|
|
are typically installed at image build time.
|
|
|
|
If you wish to have packages installed at deploy time via Puppet it
|
|
is important to have a working undercloud nameserver. You can configure
|
|
this by adding the appropriate undercloud.nameserver setting
|
|
settings to your undercoud-env.json file. Alternately, If going directly
|
|
from the seed to the overcloud then you'll need to set seed.nameserver
|
|
in your testenv.json. If you wish to install packages at deploy
|
|
time you will also need to set EnablePackageInstall to true in your
|
|
overcloud-resource-registry-puppet.yaml (see below for instructions
|
|
on how to override your Heat resource registry).
|
|
|
|
1) Git clone the tripleo-puppet-elements [1]_ project into your $TRIPLEO_ROOT. This is currently a non-standard image elements repository and needs to be manually cloned in order to build Puppet images.
|
|
|
|
2) Add tripleo-puppet-elements to your ELEMENTS_PATH::
|
|
|
|
export ELEMENTS_PATH=$ELEMENTS_PATH:$TRIPLEO_ROOT/tripleo-puppet-elements/elements:$TRIPLEO_ROOT/heat-templates/hot/software-config/elements
|
|
|
|
3) Set a variable so that a custom puppet image gets built and loaded into Glance::
|
|
|
|
export OVERCLOUD_DISK_IMAGES_CONFIG=$TRIPLEO_ROOT/tripleo-incubator/scripts/overcloud_puppet_disk_images.yaml
|
|
|
|
4) Override the tripleo-heat-templates resource registry::
|
|
|
|
export RESOURCE_REGISTRY_PATH="$TRIPLEO_ROOT/tripleo-heat-templates/overcloud-resource-registry-puppet.yaml"
|
|
|
|
5) Configure your Delorean repo URL. This is used to fetch more recently built upstream packages for your OpenStack services::
|
|
|
|
export DELOREAN_REPO_URL="http://trunk.rdoproject.org/f21/current/"
|
|
|
|
For more information on Delorean see [2]_
|
|
|
|
6) Enable the use of stackforge modules from Git. This is to work around the fact that the Fedora RPM doesn't have support for all the required modules yet::
|
|
|
|
export DIB_INSTALLTYPE_puppet_modules=source
|
|
|
|
7) Source your undercloud environment RC file (perhaps via the select-cloud script). Then execute devtest_overcloud.sh::
|
|
|
|
devtest_overcloud.sh
|
|
|
|
References
|
|
----------
|
|
.. [1] http://git.openstack.org/openstack/tripleo-puppet-elements/
|
|
.. [2] https://github.com/openstack-packages/delorean
|