Merge "Upgrade the content for containerized undercloud"

This commit is contained in:
Zuul 2018-04-13 15:26:28 +00:00 committed by Gerrit Code Review
commit c9288d42bb
3 changed files with 36 additions and 151 deletions

View File

@ -1,24 +1,10 @@
Containers based Undercloud Deployment
======================================
This documentation explains how to deploy a fully containerized undercloud on
Docker.
.. warning::
This feature isn't supported yet but we hope to support it by the end
of Rocky cycle.
While this is not currently used to deploy the overcloud, it is a great
development tool as it uses the same templates and infrastructure as the
overcloud. This lets you do faster iterations for development.
The requirements for a containerized undercloud are the same as for any other
undercloud deployment. The real difference is in where the undercloud services
will be deployed (containers vs base OS).
Architecture
------------
The docker based undercloud architecture is not very different from the
baremetal/VM based one. The services deployed in the traditional baremetal
undercloud are also deployed in the docker based one.
@ -29,141 +15,8 @@ directly on the host operating system. This reduces the required packages in
the host to the bare minimum for running the container runtime and managing the
base network layer.
Manual undercloud deployment
----------------------------
This section explains how to deploy a containerized undercloud manually. For an
automated undercloud deployment. A Quickstart version also exists and is
documented here https://docs.openstack.org/developer/tripleo-quickstart/
Preparing the environment
~~~~~~~~~~~~~~~~~~~~~~~~~
Prepare a host (either baremetal or VM) following the normal undercloud
provisioning steps (see :doc:`../installation/installing`) and stop right before
the undercloud install command. This should leave you with an updated base
operating system with no openstack packages installed but required repositories
configured.
Make sure these packages are installed before proceeding with the undercloud
installation:
* python-tripleoclient
* python-tripleoclient-heat-installer
* python-openstackclient
* docker >= 1.12.5
* openvswitch (minimum version supported by neutron)
See also
`Docker installation documentation <https://docs.docker.com/engine/installation/>`_.
Start the required host services::
$ sudo systemctl start openvswitch
$ sudo systemctl start docker
Verify that your docker environment is up and that your user can use sudo::
$ sudo docker info
.. note:: Check the :doc:`../installation/installing` and :doc:`../installation/updating`
sections for deploying and upgrading a containerized undercloud.
.. note:: Check the :ref:`debug-containers` section for more tips and tricks for
debugging containers.
The above should show no containers running. If it shows running containers,
please refer to the `Cleaning up`_ section below.
Configuring the undercloud
~~~~~~~~~~~~~~~~~~~~~~~~~~
The containers based undercloud uses the same heat templates that are used for
an overcloud deployment. Therefore, controlling the undercloud configuration can
be done by modifying the existing environment files or creating new ones.
A basic `custom.yaml` file would look like this::
parameter_defaults:
UndercloudNameserver: 8.8.8.8
NeutronServicePlugins: ""
The above configuration file overwrites the default nameserver and sets the
service plugins for neutron. If your undercloud node has a single nic and you
don't want to create a new one, it's possible to set the network configuration
to noop by changing the `custom.yaml` file to (substitute $THT_ROOT with the
right path)::
resource_registry:
OS::TripleO::Undercloud::Net::SoftwareConfig: $THT_ROOT/net-config-noop.yaml
parameter_defaults:
UndercloudNameserver: 8.8.8.8
NeutronServicePlugins: ""
Preparing container images
--------------------------
Images for undercloud services should be prepared with the
``openstack overcloud container image prepare`` command. The process is very
similar to the containerized overcloud case, see
:ref:`prepare-environment-containers`. The simplified command looks like::
$ openstack overcloud container image prepare \
--output-env-file $HOME/docker_registry.yaml
Deploying the undercloud
~~~~~~~~~~~~~~~~~~~~~~~~
The following command will install an undercloud with ironic, mistral and zaqar::
$ openstack undercloud install --use-heat
A minimal `stackrc` file will be required to query both, the keystone and the heat, APIs::
export OS_NO_CACHE=True
export OS_CLOUDNAME=overcloud
export OS_AUTH_URL=http://127.0.0.1:35358
export NOVA_VERSION=1.1
export COMPUTE_API_VERSION=1.1
export OS_USERNAME=foo
export OS_PROJECT_NAME=foo
export OS_PASSWORD=bar
Cleaning up
~~~~~~~~~~~
The following commands will help cleaning up your undercloud environment to
start the deployment from scratch:
To stop and remove all running containers::
$ sudo docker ps -qa --filter label=managed_by=docker-cmd | xargs sudo docker rm -f
To remove the existing named volumes (bear in mind this will remove your
database files too)::
$ sudo docker volume rm $(sudo docker volume ls -q)
Configuration files are generated and overwritten on every run. However, you can
also remove them by running::
$ sudo rm -Rf /var/lib/docker-puppet
$ sudo rm -Rf /var/lib/config-data
$ sudo rm -Rf /var/lib/kolla
How does the undercloud deploy work?
------------------------------------
The `undercloud install` command as written in the `Deploying the undercloud`_
section will run all the OpenStack services in a container runtime (docker)
unless the default settings are overwritten.
This command requires 2 services to be running at all times. The first one is a
basic keystone service, which is currently mocked by `tripleoclient` itself, the
second one is `heat-all` which executes the templates and installs the services.
The latter can be run on baremetal or in a container (tripleoclient will run it
in a container by default).
Checkout the :doc:`architecture` for more detailed info on how
TripleO builds, creates and runs containers.

View File

@ -76,7 +76,7 @@ Installing the Undercloud
sudo yum install -y ceph-ansible
#. Copy in the sample configuration file and edit it to reflect your environment::
#. For a non-containerized undercloud, copy in the sample configuration file and edit it to reflect your environment::
cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf
@ -87,6 +87,10 @@ Installing the Undercloud
environment and generates sane values for a number of the important
options.
#. For a containerized undercloud, use this file::
cp /usr/share/python-tripleoclient/undercloud.conf.sample ~/undercloud.conf
#. Run the command to install the undercloud:
.. admonition:: SSL
@ -102,11 +106,28 @@ Installing the Undercloud
``enable_validations = false`` in ``undercloud.conf`` to prevent
that.
.. admonition:: Stable Branch
:class: stable
The containerized undercloud deployment isn't supported before Rocky release.
Install the undercloud::
openstack undercloud install
To deploy a containerized undercloud, just add --use-heat option::
openstack undercloud install --use-heat
.. note::
The `openstack undercloud install --use-heat` command
will run all the OpenStack services in a container runtime (docker)
unless the default settings are overwritten.
This command requires 2 services to be running at all times. The first one is a
basic keystone service, which is currently executed by `tripleoclient` itself, the
second one is `heat-all` which executes the templates and installs the services.
The latter can be run on baremetal or in a container (tripleoclient will run it
in a container by default).
Once the install has completed, you should take note of the files ``stackrc`` and
``undercloud-passwords.conf``. You can source ``stackrc`` to interact with the

View File

@ -85,7 +85,7 @@ You can upgrade any packages that are installed on the undercloud machine.
.. code-block:: bash
sudo yum update python-tripleoclient
sudo yum update python-tripleoclient*
#. Run the undercloud upgrade command. This command will upgrade all packages
@ -96,6 +96,17 @@ You can upgrade any packages that are installed on the undercloud machine.
openstack undercloud upgrade
To upgrade to a containerized undercloud, just add --use-heat option::
openstack undercloud upgrade --use-heat
.. admonition:: Queens to Rocky and later
:class: otop
The containerized undercloud deployment isn't supported before Rocky release.
Therefore, the upgrade is supported in Rocky, from a non containerized undercloud
in Queens to a containerized undercloud in Rocky.
.. note::
You may wish to use time and capture the output to a file for any debug