kayobe/doc/source/configuration/reference/nova-cells.rst
Mark Goddard 354113c20b docs: Move configuration reference to subpath
This allows us to add configuration scenarios.

Change-Id: Id636f78c61237fb27fa65fa3d4b3fc1a4cf0ba6a
Story: 2004360
Task: 40777
2020-08-28 08:28:40 +01:00

252 lines
6.5 KiB
ReStructuredText

==========
Nova cells
==========
In the Train release, Kolla Ansible gained full support for the Nova cells v2
scale out feature. Whilst configuring Nova cells is documented in
:kolla-ansible-doc:`Kolla Ansible <reference/compute/nova-cells-guide>`,
implementing that configuration in Kayobe is documented here.
In Kolla Ansible, Nova cells :kolla-ansible-doc:`are configured
<reference/compute/nova-cells-guide#groups>` via group variables. In Kayobe,
these group variables can be set via Kayobe configuration. For example, to
configure ``cell0001`` the following file could be created:
.. code-block:: yaml
:caption: ``$KAYOBE_CONFIG_PATH/kolla/inventory/group_vars/cell0001/all``
---
nova_cell_name: cell0001
nova_cell_novncproxy_group: cell0001-vnc
nova_cell_conductor_group: cell0001-control
nova_cell_compute_group: cell0001-compute
After defining the cell ``group_vars`` the Kayobe inventory can be configured.
In Kayobe, cell controllers and cell compute hosts become part of the existing
``controllers`` and ``compute`` Kayobe groups because typically they will need
to be provisioned in the same way. In Kolla Ansible, to prevent non-cell
services being mapped to cell controllers, the ``controllers`` group must be
split into two. The inventory file should also include the cell definitions.
The following groups and hosts files give an example of how this may be
achieved:
.. code-block:: yaml
:caption: ``$KAYOBE_CONFIG_PATH/inventory/groups``
# Kayobe groups inventory file. This file should generally not be modified.
# If declares the top-level groups and sub-groups.
###############################################################################
# Seed groups.
[seed]
# Empty group to provide declaration of seed group.
[seed-hypervisor]
# Empty group to provide declaration of seed-hypervisor group.
[container-image-builders:children]
# Build container images on the seed by default.
seed
###############################################################################
# Overcloud groups.
[controllers]
# Empty group to provide declaration of controllers group.
[network:children]
# Add controllers to network group by default for backwards compatibility,
# although they could be separate hosts.
top-level-controllers
[monitoring]
# Empty group to provide declaration of monitoring group.
[storage]
# Empty group to provide declaration of storage group.
[compute]
# Empty group to provide declaration of compute group.
# Empty group to provide declaration of top-level controllers.
[top-level-controllers]
[overcloud:children]
controllers
network
monitoring
storage
compute
###############################################################################
# Docker groups.
[docker:children]
# Hosts in this group will have Docker installed.
seed
controllers
network
monitoring
storage
compute
[docker-registry:children]
# Hosts in this group will have a Docker Registry deployed. This group should
# generally contain only a single host, to avoid deploying multiple independent
# registries which may become unsynchronized.
seed
###############################################################################
# Baremetal compute node groups.
[baremetal-compute]
# Empty group to provide declaration of baremetal-compute group.
###############################################################################
# Networking groups.
[mgmt-switches]
# Empty group to provide declaration of mgmt-switches group.
[ctl-switches]
# Empty group to provide declaration of ctl-switches group.
[hs-switches]
# Empty group to provide declaration of hs-switches group.
[switches:children]
mgmt-switches
ctl-switches
hs-switches
.. code-block:: yaml
:caption: ``$KAYOBE_CONFIG_PATH/inventory/hosts``
# Kayobe hosts inventory file. This file should be modified to define the hosts
# and their top-level group membership.
# This host acts as the configuration management Ansible control host. This must be
# localhost.
localhost ansible_connection=local
[seed-hypervisor]
# Add a seed hypervisor node here if required. This host will run a seed node
# Virtual Machine.
[seed]
operator
[controllers:children]
top-level-controllers
cell-controllers
[top-level-controllers]
control01
[cell-controllers:children]
cell01-control
cell02-control
[compute:children]
cell01-compute
cell02-compute
[cell01:children]
cell01-control
cell01-compute
cell01-vnc
[cell01-control]
control02
[cell01-vnc]
control02
[cell01-compute]
compute01
[cell02:children]
cell02-control
cell02-compute
cell02-vnc
[cell02-control]
control03
[cell02-vnc]
control03
[cell02-compute]
compute02
compute03
##################################
[mgmt-switches]
# Add management network switches here if required.
[ctl-switches]
# Add control and provisioning switches here if required.
[hs-switches]
# Add high speed switches here if required.
Having configured the Kayobe inventory, the Kolla Ansible inventory can be
configured. Currently this can be done via the
``kolla_overcloud_inventory_top_level_group_map`` variable. For example, to
configure the two cells defined in the Kayobe inventory above, the variable
could be set to the following:
.. code-block:: yaml
:caption: ``$KAYOBE_CONFIG_PATH/kolla.yml``
kolla_overcloud_inventory_top_level_group_map:
control:
groups:
- top-level-controllers
network:
groups:
- network
compute:
groups:
- compute
monitoring:
groups:
- monitoring
cell-control:
groups:
- cell-controllers
cell0001:
groups:
- cell01
cell0001-control:
groups:
- cell01-control
cell0001-compute:
groups:
- cell01-compute
cell0001-vnc:
groups:
- cell01-vnc
cell0002:
groups:
- cell02
cell0002-control:
groups:
- cell02-control
cell0002-compute:
groups:
- cell02-compute
cell0002-vnc:
groups:
- cell02-vnc
Finally, Nova cells can be enabled in Kolla Ansible:
.. code-block:: yaml
:caption: ``$KAYOBE_CONFIG_PATH/kolla/globals.yml``
enable_cells: True