From aee2af7a758c92f50e0fddfff518f3d5e80aa9e5 Mon Sep 17 00:00:00 2001 From: Doug Szumski Date: Fri, 13 Dec 2019 16:03:59 +0000 Subject: [PATCH] Add Nova Cells documentation Clearly not very user friendly at the moment. We probably want to include these files as part of test. Change-Id: Ib6ed0e68b55a98920cbaf3e8ec828901b4b9ed9f Story: 2004291 Task: 37810 --- ...pport-for-nova-cells-8e18425b52ba06ea.yaml | 3 + doc/source/configuration/index.rst | 1 + doc/source/configuration/nova-cells.rst | 251 ++++++++++++++++++ 3 files changed, 255 insertions(+) create mode 100644 ansible/roles/kolla-ansible/tests/releasenotes/notes/add-support-for-nova-cells-8e18425b52ba06ea.yaml create mode 100644 doc/source/configuration/nova-cells.rst diff --git a/ansible/roles/kolla-ansible/tests/releasenotes/notes/add-support-for-nova-cells-8e18425b52ba06ea.yaml b/ansible/roles/kolla-ansible/tests/releasenotes/notes/add-support-for-nova-cells-8e18425b52ba06ea.yaml new file mode 100644 index 000000000..3cd15ff3f --- /dev/null +++ b/ansible/roles/kolla-ansible/tests/releasenotes/notes/add-support-for-nova-cells-8e18425b52ba06ea.yaml @@ -0,0 +1,3 @@ +--- +features: + - Adds support for deploying multiple Nova Cells. diff --git a/doc/source/configuration/index.rst b/doc/source/configuration/index.rst index 042c5baa8..171916734 100644 --- a/doc/source/configuration/index.rst +++ b/doc/source/configuration/index.rst @@ -13,3 +13,4 @@ Configuration Guide kolla-ansible bifrost ironic-python-agent + nova-cells diff --git a/doc/source/configuration/nova-cells.rst b/doc/source/configuration/nova-cells.rst new file mode 100644 index 000000000..b8160e48d --- /dev/null +++ b/doc/source/configuration/nova-cells.rst @@ -0,0 +1,251 @@ +========== +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 `, +implementing that configuration in Kayobe is documented here. + +In Kolla Ansible, Nova cells :kolla-ansible-doc:`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: + +.. 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