6.4 KiB
Ephemeral Heat
Introduction
Ephemeral Heat is a means to install the overcloud by using an ephemeral Heat process instead of a system installed Heat process. This change is possible beginning in the Wallaby release.
In a typical undercloud, Heat is installed on the undercloud and processes are run in podman containers for heat-api and heat-engine. When using ephemeral Heat, there is no longer a requirement that Heat is installed on the undercloud, instead these processes are started on demand by the deployment, update, and upgrade commands.
This model has been in use within TripleO already for both the
undercloud and standalone <standalone>
installation methods,
which start an on demand all in one heat-all process in order to perform
only the installation. Using ephemeral Heat in this way allows for
re-use of the Heat templates from tripleo-heat-templates without having
to require an already fully installed undercloud.
Description
Ephemeral Heat is enabled by passing the --heat-type
argument to openstack overcloud deploy
. The ephemeral
process can also be launched outside of a deployment with the
openstack tripleo launch heat
command. The latter command
also takes a --heat-type
argument to enable selecting the
type of Heat process to use.
Heat types
The --heat-type
argument allows for the following
options described below.
- installed
-
Use the system Heat installation. This is the historical TripleO usage of Heat with Heat fully installed on the undercloud. This is the default value, and requires a fully installed undercloud.
- native
-
Use an ephemeral
heat-all
process. The process will be started natively on the system executing tripleoclient commands by way of an OS (operating system) fork. - container
-
A podman container will be started on the executing system that runs a single
heat-all
process. - pod
-
A podman pod will be started on the executing system that runs containers for
heat-api
andheat-engine
.
In all cases, the process(es) are terminated at the end of the deployment.
Note
The native and container methods are limited in scale due to being a single Heat process. Deploying more than 3 nodes or 2 roles will significantly impact the deployment time with these methods as Heat has only a single worker thread.
Using the installed or pod methods enable scaling node and role counts as is typically required.
Using
The following example shows using --heat-type
to enable
ephemeral Heat:
openstack overcloud deploy \
--stack overcloud \
--work-dir ~/overcloud-deploy/overcloud \
--heat-type <pod|container|native> \
<other cli arguments>
With ephemeral Heat enabled, several additional deployment artifacts
are generated related to the management of the Heat process(es). These
artifacts are generated under the working directory of the deployment in
a heat-launcher
subdirectory. The working directory can be
overridden with the --work-dir
argument.
Using the above example, the Heat artifact directory would be located
at ~/overcloud-deploy/overcloud/heat-launcher
. An example
of the directory contents is shown below:
[centos@ephemeral-heat ~]$ ls -l ~/overcloud-deploy/overcloud/heat-launcher/
total 41864
-rw-rw-r--. 1 centos centos 650 Mar 24 18:39 api-paste.ini
-rw-rw-r--. 1 centos centos 1054 Mar 24 18:39 heat.conf
-rw-rw-r--. 1 centos centos 42852118 Mar 24 18:31 heat-db-dump.sql
-rw-rw-r--. 1 centos centos 2704 Mar 24 18:39 heat-pod.yaml
drwxrwxr-x. 2 centos centos 49 Mar 24 16:02 log
-rw-rw-r--. 1 centos centos 1589 Mar 24 18:39 token_file.json
The directory contains the necessary files to inspect and debug the Heat process(es), and if necessary reproduce the deployment.
Note
The consolidated log file for the Heat process is the
log
file in the heat-launcher
directory.
Launching Ephemeral Heat
Outside of a deployment, the ephemeral Heat process can also be
started with the openstack tripleo launch heat
command.
This can be used to interactively use the ephemeral Heat process or to
debug a previous deployment.
When combined with --heat-dir
and
--restore-db
, the command can be used to restore the Heat
process and database from a previous deployment:
openstack tripleo launch heat \
--heat-type pod \
--heat-dir ~/overcloud-deploy/overcloud/heat-launcher \
--restore-db
The command will exit after launching the Heat process, and the Heat process will continue to run in the background.
Interacting with ephemeral Heat
With the ephemeral Heat process launched and running,
openstackclient
can be used to interact with the Heat API.
The following shell environment configuration must set up access to the
Heat API:
unset OS_CLOUD
unset OS_PROJECT_NAME
unset OS_PROJECT_DOMAIN_NAME
unset OS_USER_DOMAIN_NAME
OS_AUTH_TYPE=none
OS_ENDPOINT=http://127.0.0.1:8006/v1/admin
You can also use the OS_CLOUD
environment to set up the
same:
export OS_CLOUD=heat
Once the environment is configured, openstackclient
work
as expected against the Heat API:
[centos@ephemeral-heat ~]$ openstack stack list
+--------------------------------------+------------+---------+-----------------+----------------------+--------------+
| ID | Stack Name | Project | Stack Status | Creation Time | Updated Time |
+--------------------------------------+------------+---------+-----------------+----------------------+--------------+
| 761e2a54-c6f9-4e0f-abe6-c8e0ad51a76c | overcloud | admin | CREATE_COMPLETE | 2021-03-22T20:48:37Z | None |
+--------------------------------------+------------+---------+-----------------+----------------------+--------------+
Killing ephemeral Heat
To stop the ephemeral Heat process previously started with
openstack tripleo launch heat
, use the --kill
argument:
openstack tripleo launch heat \
--heat-type pod \
--heat-dir ~/overcloud-deploy/overcloud/heat-launcher \
--kill
Limitations
Ephemeral Heat currently only supports new deployments. Update and Upgrade support for deployments that previously used the system installed Heat will be coming.