From b7287ec58656d86194adf523b8574c567d9fced1 Mon Sep 17 00:00:00 2001 From: Mark Goddard Date: Fri, 23 Apr 2021 17:16:10 +0100 Subject: [PATCH] [release] add kolla feature flag sync scripts and update docs Adds a script for syncing feature flags from Kolla Ansible, and updates the release docs to include this step. Also adds the inventory sync step. Change-Id: Id2bd48897d6b37a5006bad7f6e8597db20aa1b8b --- doc/source/contributor/releases.rst | 63 +++++++++++++++++++++++++++++ tools/feature-flags.py | 2 + tools/kolla-feature-flags.sh | 21 ++++++++++ 3 files changed, 86 insertions(+) create mode 100755 tools/kolla-feature-flags.sh diff --git a/doc/source/contributor/releases.rst b/doc/source/contributor/releases.rst index 68b4e514a..9155c3690 100644 --- a/doc/source/contributor/releases.rst +++ b/doc/source/contributor/releases.rst @@ -55,6 +55,69 @@ Testing Test the code and fix at a minimum all critical issues. +Synchronise with Kolla Ansible feature flags +-------------------------------------------- + +Clone the Kolla Ansible repository, and run the +Kayobe ``tools/kolla-feature-flags.sh`` script: + +.. code-block:: console + + tools/kolla-feature-flags.sh + +Copy the output of the script, and replace the ``kolla_feature_flags`` list in +``ansible/roles/kolla-ansible/vars/main.yml``. + +The ``kolla.yml`` configuration file should be updated to match: + +.. code-block:: console + + tools/feature-flags.py + +Copy the output of the script, and replace the list of ``kolla_enable_*`` flags +in ``etc/kayobe/kolla.yml``. + +Synchronise with Kolla Ansible inventory +---------------------------------------- + +Clone the Kolla Ansible repository, and copy across any relevant changes. The +Kayobe inventory is based on the ``ansible/inventory/multinode`` inventory, but +split into 3 parts - top-level, components and services. + +Top level +^^^^^^^^^ + +The top level inventory template is +``ansible/roles/kolla-ansible/templates/overcloud-top-level.j2``. It is heavily +templated, and does not typically need to be changed. Look out for changes in +the ``multinode`` inventory before the ``[baremetal]`` group. + +Components +^^^^^^^^^^ + +The components inventory template is +``ansible/roles/kolla-ansible/templates/overcloud-components.j2``. + +This includes groups in the ``multinode`` inventory from the ``[baremetal]`` +group down to the following text:: + + # Additional control implemented here. These groups allow you to control which + # services run on which hosts at a per-service level. + +Services +^^^^^^^^ + +The services inventory template is +``ansible/roles/kolla-ansible/templates/overcloud-services.j2``. + +This includes groups in the ``multinode`` inventory from the following text to +the end of the file:: + + # Additional control implemented here. These groups allow you to control which + # services run on which hosts at a per-service level. + +There are some small changes in this section which should be maintained. + .. _update-dependencies-for-release: Update dependencies to upcoming release diff --git a/tools/feature-flags.py b/tools/feature-flags.py index 921f93b31..874a0402c 100755 --- a/tools/feature-flags.py +++ b/tools/feature-flags.py @@ -2,6 +2,8 @@ # Usage: run this script and copy the output to etc/kayobe/kolla.yml +# See also: tools/kolla-feature-flags.sh + import os import pathlib diff --git a/tools/kolla-feature-flags.sh b/tools/kolla-feature-flags.sh new file mode 100755 index 000000000..8d4277a87 --- /dev/null +++ b/tools/kolla-feature-flags.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# This script generates a list of Kolla Ansible feature flags to use as the +# kolla_feature_flags variable in ansible/roles/kolla-ansible/vars/main.yml. +# It should be run periodically and before a release. + +# See also: tools/feature-flags.py + +set -e +set -o pipefail + +KOLLA_ANSIBLE_SRC=$1 +KOLLA_GROUP_VARS_ALL=${KOLLA_ANSIBLE_SRC}/ansible/group_vars/all.yml + +if [[ ! -f $KOLLA_GROUP_VARS_ALL ]]; then + echo "Usage: $0 " + exit 1 +fi + +# Find all feature flags, strip the enable_ prefix and value, sort. +cat ${KOLLA_GROUP_VARS_ALL} | grep '^enable_'| sed -e 's/enable_\(.*\):.*/ - \1/' | sort