diff --git a/doc/source/contributor/releases.rst b/doc/source/contributor/releases.rst
index 68b4e514a72d4b05921aea55e0f4c821e863da30..9155c3690c586f2dad803ff961eb2a14a65376a7 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 <path to kolla-ansible source>
+
+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 921f93b3182d40a4a4c7ca4442711f3ba819dd71..874a0402c2cf051813b1aa83a7139c6df5dcc3c4 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 0000000000000000000000000000000000000000..8d4277a87c3c56415666940ecb67b4eca377b7b2
--- /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 <path to kolla-ansible source>"
+    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