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, implementing that configuration in Kayobe is documented here.
In Kolla Ansible, Nova cells are configured 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:
---
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:
# 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
# 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:
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:
enable_cells: True