Use merge_configs and merge_yaml to generate Kolla custom config
This patch adds new functionality - merging base & environment specific kolla config. This allows you to place common settings in the base configuration and only keep environment specific settings in the environment directories. Change-Id: Id4588f4529a4522e68e22ce58711cb927fa68a9d Story: 2002009 Task: 42903
This commit is contained in:
parent
c75a32e72f
commit
428ef10fa4
@ -571,6 +571,16 @@ kolla_enable_vitrage: "no"
|
|||||||
kolla_enable_watcher: "no"
|
kolla_enable_watcher: "no"
|
||||||
kolla_enable_zun: "no"
|
kolla_enable_zun: "no"
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Kolla custom config generation.
|
||||||
|
|
||||||
|
# Feature flag to add $KAYOBE_CONFIG_PATH to the list of search paths used
|
||||||
|
# when searching for Kolla custom service configuration. Only has an effect in
|
||||||
|
# a multiple environments setup. This allows you to configure merging between
|
||||||
|
# your environment and the base layer. Defaults to true. Set to false for
|
||||||
|
# backwards compatibility.
|
||||||
|
kolla_openstack_custom_config_environment_merging_enabled: true
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Passwords and credentials.
|
# Passwords and credentials.
|
||||||
|
|
||||||
|
@ -100,53 +100,6 @@
|
|||||||
ipa_image_name: "ipa"
|
ipa_image_name: "ipa"
|
||||||
pre_tasks:
|
pre_tasks:
|
||||||
- block:
|
- block:
|
||||||
- name: Check whether Kolla extra configuration files exist
|
|
||||||
stat:
|
|
||||||
path: "{{ kayobe_env_config_path }}/kolla/config/{{ item.file }}"
|
|
||||||
get_checksum: False
|
|
||||||
get_md5: False
|
|
||||||
mime: False
|
|
||||||
register: stat_result
|
|
||||||
with_items:
|
|
||||||
- { name: aodh, file: aodh.conf }
|
|
||||||
- { name: barbican, file: barbican.conf }
|
|
||||||
- { name: blazar, file: blazar.conf }
|
|
||||||
- { name: ceilometer, file: ceilometer.conf }
|
|
||||||
- { name: cinder, file: cinder.conf }
|
|
||||||
- { name: cloudkitty, file: cloudkitty.conf }
|
|
||||||
- { name: designate, file: designate.conf }
|
|
||||||
- { name: glance, file: glance.conf }
|
|
||||||
- { name: global, file: global.conf }
|
|
||||||
- { name: gnocchi, file: gnocchi.conf }
|
|
||||||
- { name: grafana, file: grafana.ini }
|
|
||||||
- { name: heat, file: heat.conf }
|
|
||||||
- { name: inspector, file: ironic-inspector.conf }
|
|
||||||
- { name: ironic, file: ironic.conf }
|
|
||||||
- { name: keystone, file: keystone.conf }
|
|
||||||
- { name: magnum, file: magnum.conf }
|
|
||||||
- { name: manila, file: manila.conf }
|
|
||||||
- { name: mariabackup, file: backup.my.cnf }
|
|
||||||
- { name: mariadb, file: galera.cnf }
|
|
||||||
- { name: masakari, file: masakari.conf }
|
|
||||||
- { name: multipathd, file: multipath.conf }
|
|
||||||
- { name: murano, file: murano.conf }
|
|
||||||
- { name: neutron, file: neutron.conf }
|
|
||||||
- { name: neutron_ml2, file: neutron/ml2_conf.ini }
|
|
||||||
- { name: nova, file: nova.conf }
|
|
||||||
- { name: octavia, file: octavia.conf }
|
|
||||||
- { name: placement, file: placement.conf }
|
|
||||||
- { name: sahara, file: sahara.conf }
|
|
||||||
|
|
||||||
- name: Initialise a fact containing extra configuration
|
|
||||||
set_fact:
|
|
||||||
kolla_extra_config: {}
|
|
||||||
|
|
||||||
- name: Update a fact containing extra configuration
|
|
||||||
set_fact:
|
|
||||||
kolla_extra_config: "{{ kolla_extra_config | combine({item.item.name: lookup('template', '{{ item.stat.path }}')}) }}"
|
|
||||||
with_items: "{{ stat_result.results }}"
|
|
||||||
when: item.stat.exists
|
|
||||||
|
|
||||||
- name: Validate switch configuration for Neutron ML2 genericswitch driver
|
- name: Validate switch configuration for Neutron ML2 genericswitch driver
|
||||||
fail:
|
fail:
|
||||||
msg: >
|
msg: >
|
||||||
@ -217,35 +170,11 @@
|
|||||||
kolla_inspector_swift_auth:
|
kolla_inspector_swift_auth:
|
||||||
auth_type: none
|
auth_type: none
|
||||||
endpoint_override: "http://{% raw %}{{ api_interface_address }}{% endraw %}:{{ inspector_store_port }}"
|
endpoint_override: "http://{% raw %}{{ api_interface_address }}{% endraw %}:{{ inspector_store_port }}"
|
||||||
# Extra free-form user-provided configuration.
|
kolla_openstack_custom_config_paths_extra_multi_env:
|
||||||
kolla_extra_aodh: "{{ kolla_extra_config.aodh | default }}"
|
- "{{ kayobe_config_path }}"
|
||||||
kolla_extra_barbican: "{{ kolla_extra_config.barbican | default }}"
|
- "{{ kayobe_env_config_path }}"
|
||||||
kolla_extra_blazar: "{{ kolla_extra_config.blazar | default }}"
|
kolla_openstack_custom_config_paths_extra_legacy:
|
||||||
kolla_extra_ceilometer: "{{ kolla_extra_config.ceilometer | default }}"
|
- "{{ kayobe_env_config_path }}"
|
||||||
kolla_extra_cinder: "{{ kolla_extra_config.cinder | default }}"
|
kolla_openstack_custom_config_paths_extra: "{{ kolla_openstack_custom_config_paths_extra_multi_env if kolla_openstack_custom_config_environment_merging_enabled | bool else kolla_openstack_custom_config_paths_extra_legacy }}"
|
||||||
kolla_extra_cloudkitty: "{{ kolla_extra_config.cloudkitty | default }}"
|
|
||||||
kolla_extra_designate: "{{ kolla_extra_config.designate | default }}"
|
|
||||||
kolla_extra_glance: "{{ kolla_extra_config.glance | default }}"
|
|
||||||
kolla_extra_global: "{{ kolla_extra_config.global | default }}"
|
|
||||||
kolla_extra_gnocchi: "{{ kolla_extra_config.gnocchi | default }}"
|
|
||||||
kolla_extra_grafana: "{{ kolla_extra_config.grafana | default }}"
|
|
||||||
kolla_extra_heat: "{{ kolla_extra_config.heat | default }}"
|
|
||||||
kolla_extra_inspector: "{{ kolla_extra_config.inspector | default }}"
|
|
||||||
kolla_extra_ironic: "{{ kolla_extra_config.ironic | default }}"
|
|
||||||
kolla_extra_keystone: "{{ kolla_extra_config.keystone | default }}"
|
|
||||||
kolla_extra_magnum: "{{ kolla_extra_config.magnum | default }}"
|
|
||||||
kolla_extra_manila: "{{ kolla_extra_config.manila | default }}"
|
|
||||||
kolla_extra_mariabackup: "{{ kolla_extra_config.mariabackup | default }}"
|
|
||||||
kolla_extra_mariadb: "{{ kolla_extra_config.mariadb | default }}"
|
|
||||||
kolla_extra_masakari: "{{ kolla_extra_config.masakari | default }}"
|
|
||||||
kolla_extra_multipathd: "{{ kolla_extra_config.multipathd | default }}"
|
|
||||||
kolla_extra_murano: "{{ kolla_extra_config.murano | default }}"
|
|
||||||
kolla_extra_neutron: "{{ kolla_extra_config.neutron | default }}"
|
|
||||||
kolla_extra_neutron_ml2: "{{ kolla_extra_config.neutron_ml2 | default }}"
|
|
||||||
kolla_extra_nova: "{{ kolla_extra_config.nova | default }}"
|
|
||||||
kolla_extra_octavia: "{{ kolla_extra_config.octavia | default }}"
|
|
||||||
kolla_extra_placement: "{{ kolla_extra_config.placement | default }}"
|
|
||||||
kolla_extra_sahara: "{{ kolla_extra_config.sahara | default }}"
|
|
||||||
kolla_extra_config_path: "{{ kayobe_env_config_path }}/kolla/config"
|
|
||||||
kolla_libvirt_tls: "{{ compute_libvirt_enable_tls | bool }}"
|
kolla_libvirt_tls: "{{ compute_libvirt_enable_tls | bool }}"
|
||||||
kolla_nova_libvirt_certificates_src: "{{ kayobe_env_config_path }}/certificates/libvirt"
|
kolla_nova_libvirt_certificates_src: "{{ kayobe_env_config_path }}/certificates/libvirt"
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
---
|
---
|
||||||
|
- name: Ensure destination directory exists
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
path: "{{ image_download_dest | dirname }}"
|
||||||
|
|
||||||
- block:
|
- block:
|
||||||
- block:
|
- block:
|
||||||
- name: Fail if the checksum algorithm is not set
|
- name: Fail if the checksum algorithm is not set
|
||||||
|
@ -0,0 +1,229 @@
|
|||||||
|
# Copyright (c) 2023 StackHPC Ltd.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from ansible.plugins.action import ActionBase
|
||||||
|
import os
|
||||||
|
from collections import defaultdict
|
||||||
|
import pathlib
|
||||||
|
|
||||||
|
from wcmatch import glob
|
||||||
|
|
||||||
|
def _dedup(xs):
|
||||||
|
# Deduplicate a list whilst maintaining order
|
||||||
|
seen = set()
|
||||||
|
result = []
|
||||||
|
for x in xs:
|
||||||
|
if x not in seen:
|
||||||
|
seen.add(x)
|
||||||
|
result.append(x)
|
||||||
|
return result
|
||||||
|
|
||||||
|
class ConfigCollector(object):
|
||||||
|
def __init__(self, include_globs, ignore_globs, destination, search_paths,
|
||||||
|
rules):
|
||||||
|
# This variable groups together files in the search paths with
|
||||||
|
# the same relative path, for example if the search paths were:
|
||||||
|
# - {{ kayobe_config_env_path }}/
|
||||||
|
# - {{ kayobe_config_path }}/
|
||||||
|
# - {{ role_path }}/templates/
|
||||||
|
# and one of the include_globs matched nova.conf. You'd end up
|
||||||
|
# with the following files grouped together:
|
||||||
|
# - {{ kayobe_env_path }}/etc/kolla/nova.conf
|
||||||
|
# - {{ kayobe_config_path }}/etc/kolla/nova.conf
|
||||||
|
# - {{ role_path }}/templates/etc/kolla/nova.conf
|
||||||
|
# The key in the dictionary is the relative path of the file. The
|
||||||
|
# value is a list of absolute paths. This gets populated by the
|
||||||
|
# collect() method.
|
||||||
|
self.files_in_source = defaultdict(list)
|
||||||
|
# Set of files in destination. This is used to cleanup up files
|
||||||
|
# from a previous run that are no longer templated. Before any templating
|
||||||
|
# this variable is populated with all the files in the output directory.
|
||||||
|
# Each file that would be templated in the current run will be removed
|
||||||
|
# from this set as they are discovered.
|
||||||
|
self.files_in_destination = set()
|
||||||
|
# Determines which files are candidates for templating
|
||||||
|
self.include_globs = include_globs
|
||||||
|
# Some files are templated by external tasks. This is a list of files
|
||||||
|
# to not clean up.
|
||||||
|
self.ignore_globs = ignore_globs
|
||||||
|
# Where the files are being templated to
|
||||||
|
self.destination = destination
|
||||||
|
# Where to search for the source files
|
||||||
|
self.search_paths = search_paths
|
||||||
|
|
||||||
|
# Rules to determine merging strategy when multiple files are found
|
||||||
|
# with the same relative path. Lower priority numbers win.
|
||||||
|
self.rules = sorted(rules, key=lambda d: d['priority'])
|
||||||
|
|
||||||
|
def filter_files_in_destination(self):
|
||||||
|
ignored = set()
|
||||||
|
for f in self.files_in_destination:
|
||||||
|
for item in self.ignore_globs:
|
||||||
|
if not item["enabled"]:
|
||||||
|
continue
|
||||||
|
if glob.globmatch(f, item["glob"], flags=glob.GLOBSTAR):
|
||||||
|
ignored.add(f)
|
||||||
|
result = set(self.files_in_destination) - ignored
|
||||||
|
return list(result)
|
||||||
|
|
||||||
|
def _find_matching_rule(self, relative_path):
|
||||||
|
# First match wins
|
||||||
|
for rule in self.rules:
|
||||||
|
if not rule.get('enabled', True):
|
||||||
|
continue
|
||||||
|
glob_ = rule["glob"]
|
||||||
|
if glob.globmatch(relative_path, glob_, flags=glob.GLOBSTAR):
|
||||||
|
return rule
|
||||||
|
|
||||||
|
def partition_into_actions(self):
|
||||||
|
actions = {
|
||||||
|
"merge_yaml": [],
|
||||||
|
"merge_configs": [],
|
||||||
|
"template": [],
|
||||||
|
"copy": [],
|
||||||
|
"concat": [],
|
||||||
|
"create_dir": [],
|
||||||
|
"delete": []
|
||||||
|
}
|
||||||
|
missing_directories = set()
|
||||||
|
files_to_delete = self.filter_files_in_destination()
|
||||||
|
|
||||||
|
# Convert to absolute paths
|
||||||
|
files_to_delete = {
|
||||||
|
os.path.join(self.destination, x) for x in files_to_delete
|
||||||
|
}
|
||||||
|
|
||||||
|
for relative_path, sources in self.files_in_source.items():
|
||||||
|
found_match = False
|
||||||
|
destination = os.path.join(self.destination, relative_path)
|
||||||
|
# Don't delete any files we are templating
|
||||||
|
files_to_delete.discard(destination)
|
||||||
|
|
||||||
|
dirname = os.path.dirname(destination)
|
||||||
|
if not os.path.exists(dirname):
|
||||||
|
missing_directories.add(dirname)
|
||||||
|
|
||||||
|
rule = self._find_matching_rule(relative_path)
|
||||||
|
|
||||||
|
if not rule:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if rule["strategy"] == 'copy':
|
||||||
|
copy = {
|
||||||
|
"src": sources[-1],
|
||||||
|
"dest": destination,
|
||||||
|
"params": rule.get('params', [])
|
||||||
|
}
|
||||||
|
actions["copy"].append(copy)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if rule["strategy"] == "merge_yaml":
|
||||||
|
merge_yaml = {
|
||||||
|
"sources": sources,
|
||||||
|
"dest": destination,
|
||||||
|
"params": rule.get('params', [])
|
||||||
|
}
|
||||||
|
actions["merge_yaml"].append(merge_yaml)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if rule["strategy"] == "merge_configs":
|
||||||
|
merge_configs = {
|
||||||
|
"sources": sources,
|
||||||
|
"dest": destination,
|
||||||
|
"params": rule.get('params', [])
|
||||||
|
}
|
||||||
|
actions["merge_configs"].append(merge_configs)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if rule["strategy"] == "concat":
|
||||||
|
concat = {
|
||||||
|
"sources": sources,
|
||||||
|
"dest": destination,
|
||||||
|
"params": rule.get('params', [])
|
||||||
|
}
|
||||||
|
actions["concat"].append(concat)
|
||||||
|
continue
|
||||||
|
|
||||||
|
if rule["strategy"] == "template":
|
||||||
|
template = {
|
||||||
|
"src": sources[-1],
|
||||||
|
"dest": destination,
|
||||||
|
"params": rule.get('params', [])
|
||||||
|
}
|
||||||
|
actions["template"].append(template)
|
||||||
|
continue
|
||||||
|
|
||||||
|
actions["create_dir"] = list(missing_directories)
|
||||||
|
# Sort by length so that subdirectories are created after the parent
|
||||||
|
actions["create_dir"].sort(key=len)
|
||||||
|
|
||||||
|
actions["delete"] = list(files_to_delete)
|
||||||
|
return actions
|
||||||
|
|
||||||
|
def collect(self):
|
||||||
|
for item in self.include_globs:
|
||||||
|
self._collect_source(item)
|
||||||
|
self._collect_destination(item)
|
||||||
|
|
||||||
|
def _collect_source(self, item):
|
||||||
|
enabled = item.get("enabled", False)
|
||||||
|
if not isinstance(enabled, bool):
|
||||||
|
raise ValueError("Expecting a boolean: %s" % item)
|
||||||
|
if not enabled:
|
||||||
|
return
|
||||||
|
for search_path in self.search_paths:
|
||||||
|
abs_glob = os.path.join(search_path, item["glob"])
|
||||||
|
files = glob.glob(abs_glob, flags=glob.GLOBSTAR)
|
||||||
|
for abs_path in files:
|
||||||
|
if not os.path.isfile(abs_path):
|
||||||
|
continue
|
||||||
|
relative_path = os.path.relpath(abs_path, search_path)
|
||||||
|
self.files_in_source[relative_path].append(abs_path)
|
||||||
|
|
||||||
|
def _collect_destination(self, item):
|
||||||
|
abs_glob = os.path.join(self.destination, item["glob"])
|
||||||
|
files = glob.glob(abs_glob, flags=glob.GLOBSTAR)
|
||||||
|
for abs_path in files:
|
||||||
|
if not os.path.isfile(abs_path):
|
||||||
|
continue
|
||||||
|
relative_path = os.path.relpath(abs_path, self.destination)
|
||||||
|
self.files_in_destination.add(relative_path)
|
||||||
|
|
||||||
|
class ActionModule(ActionBase):
|
||||||
|
|
||||||
|
def run(self, tmp=None, task_vars=None):
|
||||||
|
if task_vars is None:
|
||||||
|
task_vars = dict()
|
||||||
|
|
||||||
|
result = super(ActionModule, self).run(tmp, task_vars)
|
||||||
|
|
||||||
|
# This class never changes anything. We only collect the extra config
|
||||||
|
# files and group by action.
|
||||||
|
result['changed'] = False
|
||||||
|
|
||||||
|
args = self._task.args
|
||||||
|
|
||||||
|
collector = ConfigCollector(
|
||||||
|
destination=args.get("destination"),
|
||||||
|
ignore_globs=args.get("ignore_globs"),
|
||||||
|
include_globs=args.get("include_globs"),
|
||||||
|
rules=args.get("rules"),
|
||||||
|
search_paths=_dedup(args["search_paths"])
|
||||||
|
)
|
||||||
|
|
||||||
|
collector.collect()
|
||||||
|
|
||||||
|
result.update(collector.partition_into_actions())
|
||||||
|
|
||||||
|
return result
|
@ -1,6 +1,19 @@
|
|||||||
---
|
---
|
||||||
# Path to extra kolla-ansible configuration files.
|
# Ordered list of paths to default kolla-ansible configuration files. Least
|
||||||
kolla_extra_config_path:
|
# specific first. Default is search the role templates in
|
||||||
|
# templates/kolla/config.
|
||||||
|
kolla_openstack_custom_config_paths_default:
|
||||||
|
- "{{ role_path }}/templates"
|
||||||
|
|
||||||
|
# Ordered list of paths to extra kolla-ansible configuration files. Least
|
||||||
|
# specific first. Default is an empty list.
|
||||||
|
kolla_openstack_custom_config_paths_extra: []
|
||||||
|
|
||||||
|
# Ordered list of paths to kolla-ansible configuration files. Least specific
|
||||||
|
# first. Default is a combination of
|
||||||
|
# kolla_openstack_custom_config_paths_default and
|
||||||
|
# kolla_openstack_custom_config_paths_extra.
|
||||||
|
kolla_openstack_custom_config_paths: "{{ kolla_openstack_custom_config_paths_default + kolla_openstack_custom_config_paths_extra }}"
|
||||||
|
|
||||||
# Directory where Kolla custom configuration files will be installed.
|
# Directory where Kolla custom configuration files will be installed.
|
||||||
kolla_node_custom_config_path: /etc/kolla/config
|
kolla_node_custom_config_path: /etc/kolla/config
|
||||||
@ -8,15 +21,307 @@ kolla_node_custom_config_path: /etc/kolla/config
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# Global configuration.
|
# Global configuration.
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to global.conf.
|
# Free form extra configuration to append to global.conf.
|
||||||
kolla_extra_global:
|
kolla_extra_global:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Kolla custom config generation.
|
||||||
|
|
||||||
|
# Default value for kolla_openstack_custom_config_include_globs.
|
||||||
|
kolla_openstack_custom_config_include_globs_default:
|
||||||
|
- enabled: '{{ kolla_enable_aodh | bool }}'
|
||||||
|
glob: aodh.conf
|
||||||
|
- enabled: '{{ kolla_enable_aodh | bool }}'
|
||||||
|
glob: aodh/**
|
||||||
|
- enabled: '{{ kolla_enable_barbican | bool }}'
|
||||||
|
glob: barbican.conf
|
||||||
|
- enabled: '{{ kolla_enable_barbican | bool }}'
|
||||||
|
glob: barbican/**
|
||||||
|
- enabled: '{{ kolla_enable_barbican | bool }}'
|
||||||
|
glob: barbican-api/**
|
||||||
|
- enabled: '{{ kolla_enable_blazar | bool }}'
|
||||||
|
glob: blazar.conf
|
||||||
|
- enabled: '{{ kolla_enable_blazar | bool }}'
|
||||||
|
glob: blazar/**
|
||||||
|
- enabled: '{{ kolla_enable_ceilometer | bool }}'
|
||||||
|
glob: ceilometer.conf
|
||||||
|
- enabled: '{{ kolla_enable_ceilometer | bool }}'
|
||||||
|
glob: ceilometer/**
|
||||||
|
- enabled: '{{ kolla_enable_cinder | bool }}'
|
||||||
|
glob: cinder.conf
|
||||||
|
- enabled: '{{ kolla_enable_cinder | bool }}'
|
||||||
|
glob: nfs_shares
|
||||||
|
- enabled: '{{ kolla_enable_cinder | bool }}'
|
||||||
|
glob: cinder/**
|
||||||
|
- enabled: '{{ kolla_enable_cloudkitty | bool }}'
|
||||||
|
glob: cloudkitty.conf
|
||||||
|
- enabled: '{{ kolla_enable_cloudkitty | bool }}'
|
||||||
|
glob: cloudkitty/**
|
||||||
|
- enabled: '{{ kolla_enable_designate | bool }}'
|
||||||
|
glob: designate.conf
|
||||||
|
- enabled: '{{ kolla_enable_designate | bool }}'
|
||||||
|
glob: designate/**
|
||||||
|
- enabled: '{{ kolla_enable_fluentd | bool }}'
|
||||||
|
glob: fluentd/**/*.conf
|
||||||
|
- enabled: '{{ kolla_enable_mariadb | bool }}'
|
||||||
|
glob: galera.cnf
|
||||||
|
- enabled: '{{ kolla_enable_glance | bool }}'
|
||||||
|
glob: glance*.conf
|
||||||
|
- enabled: '{{ kolla_enable_glance | bool }}'
|
||||||
|
glob: glance/**
|
||||||
|
- enabled: true
|
||||||
|
glob: global.conf
|
||||||
|
- enabled: '{{ kolla_enable_gnocchi | bool }}'
|
||||||
|
glob: gnocchi.conf
|
||||||
|
- enabled: '{{ kolla_enable_gnocchi | bool }}'
|
||||||
|
glob: gnocchi/**
|
||||||
|
- enabled: '{{ kolla_enable_grafana | bool }}'
|
||||||
|
glob: grafana.ini
|
||||||
|
- enabled: '{{ kolla_enable_grafana | bool }}'
|
||||||
|
glob: grafana/**
|
||||||
|
- enabled: '{{ kolla_enable_haproxy | bool }}'
|
||||||
|
glob: haproxy-config/**
|
||||||
|
- enabled: '{{ kolla_enable_haproxy | bool }}'
|
||||||
|
glob: haproxy/**
|
||||||
|
- enabled: '{{ kolla_enable_heat | bool }}'
|
||||||
|
glob: heat.conf
|
||||||
|
- enabled: '{{ kolla_enable_heat | bool }}'
|
||||||
|
glob: heat/**
|
||||||
|
- enabled: '{{ kolla_enable_horizon | bool }}'
|
||||||
|
glob: horizon/**
|
||||||
|
- enabled: '{{ kolla_enable_influxdb | bool }}'
|
||||||
|
glob: influx*
|
||||||
|
- enabled: '{{ kolla_enable_ironic | bool }}'
|
||||||
|
glob: ironic-inspector.conf
|
||||||
|
- enabled: '{{ kolla_enable_ironic | bool }}'
|
||||||
|
glob: ironic.conf
|
||||||
|
- enabled: '{{ kolla_enable_ironic | bool }}'
|
||||||
|
glob: ironic/**
|
||||||
|
- enabled: '{{ kolla_enable_keepalived | bool }}'
|
||||||
|
glob: keepalived/**
|
||||||
|
- enabled: '{{ kolla_enable_keystone | bool }}'
|
||||||
|
glob: keystone.conf
|
||||||
|
- enabled: '{{ kolla_enable_keystone | bool }}'
|
||||||
|
glob: keystone/**
|
||||||
|
- enabled: true
|
||||||
|
glob: kolla-toolbox/**
|
||||||
|
- enabled: '{{ kolla_enable_magnum | bool }}'
|
||||||
|
glob: magnum.conf
|
||||||
|
- enabled: '{{ kolla_enable_magnum | bool }}'
|
||||||
|
glob: magnum/**
|
||||||
|
- enabled: '{{ kolla_enable_manila | bool }}'
|
||||||
|
glob: manila.conf
|
||||||
|
- enabled: '{{ kolla_enable_manila | bool }}'
|
||||||
|
glob: manila/**
|
||||||
|
- enabled: '{{ kolla_enable_mariadb | bool }}'
|
||||||
|
glob: backup.my.cnf
|
||||||
|
- enabled: '{{ kolla_enable_mariadb | bool }}'
|
||||||
|
glob: mariadb/**
|
||||||
|
- enabled: '{{ kolla_enable_masakari | bool }}'
|
||||||
|
glob: masakari.conf
|
||||||
|
- enabled: '{{ kolla_enable_masakari | bool }}'
|
||||||
|
glob: masakari/**
|
||||||
|
- enabled: '{{ kolla_enable_multipathd | bool }}'
|
||||||
|
glob: multipath.conf
|
||||||
|
- enabled: '{{ kolla_enable_multipathd | bool }}'
|
||||||
|
glob: multipath/**
|
||||||
|
- enabled: '{{ kolla_enable_murano | bool }}'
|
||||||
|
glob: murano.conf
|
||||||
|
- enabled: '{{ kolla_enable_murano | bool }}'
|
||||||
|
glob: murano/**
|
||||||
|
- enabled: '{{ kolla_enable_neutron | bool }}'
|
||||||
|
glob: neutron.conf
|
||||||
|
- enabled: '{{ kolla_enable_neutron | bool }}'
|
||||||
|
glob: neutron/**
|
||||||
|
- enabled: '{{ kolla_enable_nova | bool }}'
|
||||||
|
glob: nova.conf
|
||||||
|
- enabled: '{{ kolla_enable_nova | bool }}'
|
||||||
|
glob: nova/**
|
||||||
|
- enabled: '{{ kolla_enable_nova | bool }}'
|
||||||
|
glob: nova_compute/**
|
||||||
|
- enabled: '{{ kolla_enable_octavia | bool }}'
|
||||||
|
glob: octavia.conf
|
||||||
|
- enabled: '{{ kolla_enable_octavia | bool }}'
|
||||||
|
glob: octavia/**
|
||||||
|
- enabled: '{{ kolla_enable_opensearch | bool }}'
|
||||||
|
glob: opensearch.yml
|
||||||
|
- enabled: '{{ kolla_enable_opensearch | bool }}'
|
||||||
|
glob: opensearch/**
|
||||||
|
- enabled: '{{ kolla_enable_placement | bool }}'
|
||||||
|
glob: placement.conf
|
||||||
|
- enabled: '{{ kolla_enable_placement | bool }}'
|
||||||
|
glob: placement/**
|
||||||
|
- enabled: '{{ kolla_enable_prometheus | bool }}'
|
||||||
|
glob: prometheus/**
|
||||||
|
- enabled: '{{ kolla_enable_sahara | bool }}'
|
||||||
|
glob: sahara.conf
|
||||||
|
- enabled: '{{ kolla_enable_sahara | bool }}'
|
||||||
|
glob: sahara/**
|
||||||
|
- enabled: '{{ kolla_enable_swift | bool }}'
|
||||||
|
glob: swift/**
|
||||||
|
|
||||||
|
# Extra items to add to kolla_openstack_custom_config_include_globs_default
|
||||||
|
# to produce kolla_openstack_custom_config_include_globs.
|
||||||
|
kolla_openstack_custom_config_include_globs_extra: []
|
||||||
|
|
||||||
|
# List of dictionaries with the following keys:
|
||||||
|
# glob: a glob pattern. Any files matching this pattern will be copied to the
|
||||||
|
# the kolla custom config directory
|
||||||
|
# enabled: boolean to disable the glob.
|
||||||
|
# This determines the list of files to copy to the generated kolla config
|
||||||
|
# directory.
|
||||||
|
kolla_openstack_custom_config_include_globs: "{{
|
||||||
|
kolla_openstack_custom_config_include_globs_default +
|
||||||
|
kolla_openstack_custom_config_include_globs_extra }}"
|
||||||
|
|
||||||
|
# Kolla config generation rules. These operate on the list of files produced by
|
||||||
|
# applying kolla_openstack_custom_config_include_globs. Each of the paths in
|
||||||
|
# kolla_openstack_custom_config_paths is searched for files matching one of the
|
||||||
|
# globs. If a match is found, any files with the same relative path are grouped
|
||||||
|
# together. The rules determine what to do with these matching files e.g copy
|
||||||
|
# the most specific file without templating, merge the files with
|
||||||
|
# merge_configs, etc.
|
||||||
|
# List of dictionaries with the following keys:
|
||||||
|
# glob: A glob matching files for this rule to match on (relative to the
|
||||||
|
# search path)
|
||||||
|
# priority: The rules are processed in increasing priority order with the
|
||||||
|
# first rule matching taking effect.
|
||||||
|
# strategy: How to process the matched file. One of copy, concat, template,
|
||||||
|
# merge_configs, merge_yaml
|
||||||
|
# params: List of params to pass to module enacting the strategy
|
||||||
|
# Strategies:
|
||||||
|
# copy: Copy most specific file to kolla config without templating
|
||||||
|
# template: Template most specific file to kolla config
|
||||||
|
# concat: Concatenate files and copy the result to generated kolla config
|
||||||
|
# merge_configs: Use the merge_configs module to merge an ini file, before
|
||||||
|
# copying to the generated kolla-config.
|
||||||
|
# merge_yaml: Use the merge_yaml module to merge a file, before copying to
|
||||||
|
# the generated kolla-config.
|
||||||
|
kolla_openstack_custom_config_rules: "{{ kolla_openstack_custom_config_rules_default | rejectattr('glob', 'in', kolla_openstack_custom_config_rules_default_remove) + kolla_openstack_custom_config_rules_extra }}"
|
||||||
|
|
||||||
|
# Whether to enable ini merging rules in
|
||||||
|
# kolla_openstack_custom_config_rules_default. Default is true.
|
||||||
|
kolla_openstack_custom_config_merge_configs_enabled: true
|
||||||
|
|
||||||
|
# Whether to enable yaml merging rules in
|
||||||
|
# kolla_openstack_custom_config_rules_default. Default is true.
|
||||||
|
kolla_openstack_custom_config_merge_yaml_enabled: true
|
||||||
|
|
||||||
|
# Default merge strategy for ini files in
|
||||||
|
# kolla_openstack_custom_config_rules_default. Default is concat.
|
||||||
|
kolla_openstack_custom_config_ini_merge_strategy_default: concat
|
||||||
|
|
||||||
|
# Default value for kolla_openstack_custom_config_rules.
|
||||||
|
kolla_openstack_custom_config_rules_default:
|
||||||
|
- glob: horizon/themes/**
|
||||||
|
strategy: copy
|
||||||
|
priority: 1000
|
||||||
|
- glob: ironic/ironic-agent.initramfs
|
||||||
|
strategy: copy
|
||||||
|
priority: 1000
|
||||||
|
- glob: ironic/ironic-agent.kernel
|
||||||
|
strategy: copy
|
||||||
|
priority: 1000
|
||||||
|
- glob: swift/*.builder
|
||||||
|
strategy: copy
|
||||||
|
priority: 1000
|
||||||
|
- glob: swift/*.ring.gz
|
||||||
|
strategy: copy
|
||||||
|
priority: 1000
|
||||||
|
- glob: '**/*.pem'
|
||||||
|
strategy: copy
|
||||||
|
priority: 1000
|
||||||
|
# Exceptions for *.conf files which are not INI format
|
||||||
|
- glob: "**/collectd.conf"
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: designate/**/named.conf
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: designate/**/rndc.conf
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: "**/dnsmasq.conf"
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: fluentd/**/*.conf
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: hacluster-corosync/**/corosync.conf
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: horizon/**/horizon.conf
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: "**/*httpd.conf"
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: "**/influxdb.conf"
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: "**/keepalived.conf"
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: "**/multipath.conf"
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: "**/rabbitmq*.conf"
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
- glob: "**/*wsgi*.conf"
|
||||||
|
strategy: template
|
||||||
|
priority: 1000
|
||||||
|
# INI files
|
||||||
|
- glob: "**/*.conf"
|
||||||
|
strategy: "{{ kolla_openstack_custom_config_ini_merge_strategy_default }}"
|
||||||
|
priority: 2000
|
||||||
|
enabled: "{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}"
|
||||||
|
- glob: "**/*.ini"
|
||||||
|
strategy: "{{ kolla_openstack_custom_config_ini_merge_strategy_default }}"
|
||||||
|
priority: 2000
|
||||||
|
enabled: "{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}"
|
||||||
|
- glob: "**/galera.cnf"
|
||||||
|
strategy: "{{ kolla_openstack_custom_config_ini_merge_strategy_default }}"
|
||||||
|
priority: 2000
|
||||||
|
enabled: "{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}"
|
||||||
|
- glob: "**/kafka.server.properties"
|
||||||
|
strategy: "{{ kolla_openstack_custom_config_ini_merge_strategy_default }}"
|
||||||
|
priority: 2000
|
||||||
|
enabled: "{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}"
|
||||||
|
- glob: "**/*my.cnf"
|
||||||
|
strategy: "{{ kolla_openstack_custom_config_ini_merge_strategy_default }}"
|
||||||
|
priority: 2000
|
||||||
|
enabled: "{{ kolla_openstack_custom_config_merge_configs_enabled | bool }}"
|
||||||
|
# YAML files
|
||||||
|
- glob: "**/*.yml"
|
||||||
|
strategy: merge_yaml
|
||||||
|
priority: 2000
|
||||||
|
enabled: "{{ kolla_openstack_custom_config_merge_yaml_enabled | bool }}"
|
||||||
|
- glob: "**/*.yaml"
|
||||||
|
strategy: merge_yaml
|
||||||
|
priority: 2000
|
||||||
|
enabled: "{{ kolla_openstack_custom_config_merge_yaml_enabled | bool }}"
|
||||||
|
# Catch all. Fallback to templating to match legacy behaviour.
|
||||||
|
- glob: '**'
|
||||||
|
strategy: template
|
||||||
|
priority: 65535
|
||||||
|
|
||||||
|
# List of globs to filter from kolla_openstack_custom_config_rules_default.
|
||||||
|
# Default is an empty list.
|
||||||
|
kolla_openstack_custom_config_rules_default_remove: []
|
||||||
|
|
||||||
|
# Extra items to add to kolla_openstack_custom_config_rules_default
|
||||||
|
# to produce kolla_openstack_custom_config_rules.
|
||||||
|
kolla_openstack_custom_config_rules_extra: []
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Aodh configuration.
|
# Aodh configuration.
|
||||||
|
|
||||||
# Whether to enable Aodh.
|
# Whether to enable Aodh.
|
||||||
kolla_enable_aodh:
|
kolla_enable_aodh: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to aodh.conf.
|
# Free form extra configuration to append to aodh.conf.
|
||||||
kolla_extra_aodh:
|
kolla_extra_aodh:
|
||||||
|
|
||||||
@ -24,8 +329,9 @@ kolla_extra_aodh:
|
|||||||
# Barbican configuration.
|
# Barbican configuration.
|
||||||
|
|
||||||
# Whether to enable Barbican.
|
# Whether to enable Barbican.
|
||||||
kolla_enable_barbican:
|
kolla_enable_barbican: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to barbican.conf.
|
# Free form extra configuration to append to barbican.conf.
|
||||||
kolla_extra_barbican:
|
kolla_extra_barbican:
|
||||||
|
|
||||||
@ -33,8 +339,9 @@ kolla_extra_barbican:
|
|||||||
# Blazar configuration.
|
# Blazar configuration.
|
||||||
|
|
||||||
# Whether to enable Blazar.
|
# Whether to enable Blazar.
|
||||||
kolla_enable_blazar:
|
kolla_enable_blazar: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to blazar.conf.
|
# Free form extra configuration to append to blazar.conf.
|
||||||
kolla_extra_blazar:
|
kolla_extra_blazar:
|
||||||
|
|
||||||
@ -42,8 +349,9 @@ kolla_extra_blazar:
|
|||||||
# Ceilometer configuration.
|
# Ceilometer configuration.
|
||||||
|
|
||||||
# Whether to enable Ceilometer.
|
# Whether to enable Ceilometer.
|
||||||
kolla_enable_ceilometer:
|
kolla_enable_ceilometer: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to ceilometer.conf.
|
# Free form extra configuration to append to ceilometer.conf.
|
||||||
kolla_extra_ceilometer:
|
kolla_extra_ceilometer:
|
||||||
|
|
||||||
@ -51,8 +359,9 @@ kolla_extra_ceilometer:
|
|||||||
# cinder configuration.
|
# cinder configuration.
|
||||||
|
|
||||||
# Whether to enable cinder.
|
# Whether to enable cinder.
|
||||||
kolla_enable_cinder:
|
kolla_enable_cinder: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to cinder.conf.
|
# Free form extra configuration to append to cinder.conf.
|
||||||
kolla_extra_cinder:
|
kolla_extra_cinder:
|
||||||
|
|
||||||
@ -60,8 +369,9 @@ kolla_extra_cinder:
|
|||||||
# CloudKitty configuration.
|
# CloudKitty configuration.
|
||||||
|
|
||||||
# Whether to enable CloudKitty.
|
# Whether to enable CloudKitty.
|
||||||
kolla_enable_cloudkitty:
|
kolla_enable_cloudkitty: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to cloudkitty.conf.
|
# Free form extra configuration to append to cloudkitty.conf.
|
||||||
kolla_extra_cloudkitty:
|
kolla_extra_cloudkitty:
|
||||||
|
|
||||||
@ -69,17 +379,25 @@ kolla_extra_cloudkitty:
|
|||||||
# designate configuration.
|
# designate configuration.
|
||||||
|
|
||||||
# Whether to enable designate.
|
# Whether to enable designate.
|
||||||
kolla_enable_designate:
|
kolla_enable_designate: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to designate.conf.
|
# Free form extra configuration to append to designate.conf.
|
||||||
kolla_extra_designate:
|
kolla_extra_designate:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Fluentd configuration.
|
||||||
|
|
||||||
|
# Whether to enable Fluentd.
|
||||||
|
kolla_enable_fluentd: false
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Glance configuration.
|
# Glance configuration.
|
||||||
|
|
||||||
# Whether to enable Glance.
|
# Whether to enable Glance.
|
||||||
kolla_enable_glance:
|
kolla_enable_glance: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to glance-api.conf and
|
# Free form extra configuration to append to glance-api.conf and
|
||||||
# glance-registry.conf.
|
# glance-registry.conf.
|
||||||
kolla_extra_glance:
|
kolla_extra_glance:
|
||||||
@ -88,8 +406,9 @@ kolla_extra_glance:
|
|||||||
# Gnocchi configuration.
|
# Gnocchi configuration.
|
||||||
|
|
||||||
# Whether to enable Gnocchi.
|
# Whether to enable Gnocchi.
|
||||||
kolla_enable_gnocchi:
|
kolla_enable_gnocchi: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to gnocchi.conf.
|
# Free form extra configuration to append to gnocchi.conf.
|
||||||
kolla_extra_gnocchi:
|
kolla_extra_gnocchi:
|
||||||
|
|
||||||
@ -97,11 +416,12 @@ kolla_extra_gnocchi:
|
|||||||
# Grafana configuration.
|
# Grafana configuration.
|
||||||
|
|
||||||
# Whether to enable Grafana.
|
# Whether to enable Grafana.
|
||||||
kolla_enable_grafana:
|
kolla_enable_grafana: false
|
||||||
|
|
||||||
# Name of the admin user for Grafana.
|
# Name of the admin user for Grafana.
|
||||||
grafana_local_admin_user_name:
|
grafana_local_admin_user_name:
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to grafana.ini.
|
# Free form extra configuration to append to grafana.ini.
|
||||||
kolla_extra_grafana:
|
kolla_extra_grafana:
|
||||||
|
|
||||||
@ -109,23 +429,15 @@ kolla_extra_grafana:
|
|||||||
# HAProxy configuration.
|
# HAProxy configuration.
|
||||||
|
|
||||||
# Whether to enable HAProxy.
|
# Whether to enable HAProxy.
|
||||||
kolla_enable_haproxy:
|
kolla_enable_haproxy: false
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# Keystone configuration.
|
|
||||||
|
|
||||||
# Whether to enable Keystone.
|
|
||||||
kolla_enable_keystone:
|
|
||||||
|
|
||||||
# Free form extra configuration to append to Keystone.conf
|
|
||||||
kolla_extra_keystone:
|
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Heat configuration.
|
# Heat configuration.
|
||||||
|
|
||||||
# Whether to enable Heat.
|
# Whether to enable Heat.
|
||||||
kolla_enable_heat:
|
kolla_enable_heat: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to heat.conf.
|
# Free form extra configuration to append to heat.conf.
|
||||||
kolla_extra_heat:
|
kolla_extra_heat:
|
||||||
|
|
||||||
@ -133,19 +445,19 @@ kolla_extra_heat:
|
|||||||
# Horizon configuration.
|
# Horizon configuration.
|
||||||
|
|
||||||
# Whether to enable Horizon.
|
# Whether to enable Horizon.
|
||||||
kolla_enable_horizon:
|
kolla_enable_horizon: false
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# InfluxDB configuration.
|
# InfluxDB configuration.
|
||||||
|
|
||||||
# Whether to enable InfluxDB.
|
# Whether to enable InfluxDB.
|
||||||
kolla_enable_influxdb:
|
kolla_enable_influxdb: false
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Ironic configuration.
|
# Ironic configuration.
|
||||||
|
|
||||||
# Whether to enable Ironic.
|
# Whether to enable Ironic.
|
||||||
kolla_enable_ironic:
|
kolla_enable_ironic: false
|
||||||
|
|
||||||
# List of enabled Ironic drivers.
|
# List of enabled Ironic drivers.
|
||||||
kolla_ironic_drivers:
|
kolla_ironic_drivers:
|
||||||
@ -252,6 +564,7 @@ kolla_ironic_provisioning_network:
|
|||||||
# List of additional append parameters for baremetal PXE boot.
|
# List of additional append parameters for baremetal PXE boot.
|
||||||
kolla_ironic_pxe_append_params: []
|
kolla_ironic_pxe_append_params: []
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to ironic.conf.
|
# Free form extra configuration to append to ironic.conf.
|
||||||
kolla_extra_ironic:
|
kolla_extra_ironic:
|
||||||
|
|
||||||
@ -313,15 +626,33 @@ kolla_inspector_enable_swift:
|
|||||||
# store.
|
# store.
|
||||||
kolla_inspector_swift_auth: {}
|
kolla_inspector_swift_auth: {}
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to ironic-inspector.conf.
|
# Free form extra configuration to append to ironic-inspector.conf.
|
||||||
kolla_extra_inspector:
|
kolla_extra_inspector:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Keepalived configuration.
|
||||||
|
|
||||||
|
# Whether to enable Keepalived.
|
||||||
|
kolla_enable_keepalived: false
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Keystone configuration.
|
||||||
|
|
||||||
|
# Whether to enable Keystone.
|
||||||
|
kolla_enable_keystone: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
|
# Free form extra configuration to append to Keystone.conf
|
||||||
|
kolla_extra_keystone:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Magnum configuration.
|
# Magnum configuration.
|
||||||
|
|
||||||
# Whether to enable Magnum.
|
# Whether to enable Magnum.
|
||||||
kolla_enable_magnum:
|
kolla_enable_magnum: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to magnum.conf.
|
# Free form extra configuration to append to magnum.conf.
|
||||||
kolla_extra_magnum:
|
kolla_extra_magnum:
|
||||||
|
|
||||||
@ -329,8 +660,9 @@ kolla_extra_magnum:
|
|||||||
# Mariabackup configuration.
|
# Mariabackup configuration.
|
||||||
|
|
||||||
# Whether to enable Mariabackup.
|
# Whether to enable Mariabackup.
|
||||||
kolla_enable_mariabackup:
|
kolla_enable_mariabackup: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to backup.my.cnf.
|
# Free form extra configuration to append to backup.my.cnf.
|
||||||
kolla_extra_mariabackup:
|
kolla_extra_mariabackup:
|
||||||
|
|
||||||
@ -338,8 +670,9 @@ kolla_extra_mariabackup:
|
|||||||
# MariaDB configuration.
|
# MariaDB configuration.
|
||||||
|
|
||||||
# Whether to enable MariaDB.
|
# Whether to enable MariaDB.
|
||||||
kolla_enable_mariadb:
|
kolla_enable_mariadb: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to galera.cnf.
|
# Free form extra configuration to append to galera.cnf.
|
||||||
kolla_extra_mariadb:
|
kolla_extra_mariadb:
|
||||||
|
|
||||||
@ -347,14 +680,19 @@ kolla_extra_mariadb:
|
|||||||
# Manila configuration.
|
# Manila configuration.
|
||||||
|
|
||||||
# Whether to enable Manila.
|
# Whether to enable Manila.
|
||||||
kolla_enable_manila:
|
kolla_enable_manila: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
|
# Free form extra configuration to append to manila.conf.
|
||||||
|
kolla_extra_manila:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Masakari configuration.
|
# Masakari configuration.
|
||||||
|
|
||||||
# Whether to enable Masakari.
|
# Whether to enable Masakari.
|
||||||
kolla_enable_masakari:
|
kolla_enable_masakari: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to masakari.conf.
|
# Free form extra configuration to append to masakari.conf.
|
||||||
kolla_extra_masakari:
|
kolla_extra_masakari:
|
||||||
|
|
||||||
@ -362,7 +700,7 @@ kolla_extra_masakari:
|
|||||||
# Multipathd configuration.
|
# Multipathd configuration.
|
||||||
|
|
||||||
# Whether to enable Multipathd.
|
# Whether to enable Multipathd.
|
||||||
kolla_enable_multipathd:
|
kolla_enable_multipathd: false
|
||||||
|
|
||||||
# Free form extra configuration to append to multipath.conf.
|
# Free form extra configuration to append to multipath.conf.
|
||||||
kolla_extra_multipathd:
|
kolla_extra_multipathd:
|
||||||
@ -371,8 +709,9 @@ kolla_extra_multipathd:
|
|||||||
# Murano configuration.
|
# Murano configuration.
|
||||||
|
|
||||||
# Whether to enable Murano.
|
# Whether to enable Murano.
|
||||||
kolla_enable_murano:
|
kolla_enable_murano: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to murano.conf.
|
# Free form extra configuration to append to murano.conf.
|
||||||
kolla_extra_murano:
|
kolla_extra_murano:
|
||||||
|
|
||||||
@ -380,7 +719,7 @@ kolla_extra_murano:
|
|||||||
# Neutron configuration.
|
# Neutron configuration.
|
||||||
|
|
||||||
# Whether to enable Neutron.
|
# Whether to enable Neutron.
|
||||||
kolla_enable_neutron:
|
kolla_enable_neutron: false
|
||||||
|
|
||||||
# List of Neutron ML2 mechanism drivers to use.
|
# List of Neutron ML2 mechanism drivers to use.
|
||||||
kolla_neutron_ml2_mechanism_drivers: []
|
kolla_neutron_ml2_mechanism_drivers: []
|
||||||
@ -416,9 +755,11 @@ kolla_neutron_ml2_generic_switches: []
|
|||||||
# secret: not currently supported
|
# secret: not currently supported
|
||||||
kolla_neutron_ml2_generic_switch_hosts: []
|
kolla_neutron_ml2_generic_switch_hosts: []
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to neutron.conf.
|
# Free form extra configuration to append to neutron.conf.
|
||||||
kolla_extra_neutron:
|
kolla_extra_neutron:
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to ml2_conf.ini.
|
# Free form extra configuration to append to ml2_conf.ini.
|
||||||
kolla_extra_neutron_ml2:
|
kolla_extra_neutron_ml2:
|
||||||
|
|
||||||
@ -426,11 +767,12 @@ kolla_extra_neutron_ml2:
|
|||||||
# Nova configuration.
|
# Nova configuration.
|
||||||
|
|
||||||
# Whether to enable Nova.
|
# Whether to enable Nova.
|
||||||
kolla_enable_nova:
|
kolla_enable_nova: false
|
||||||
|
|
||||||
# Whether to enable Nova libvirt container.
|
# Whether to enable Nova libvirt container.
|
||||||
kolla_enable_nova_libvirt_container:
|
kolla_enable_nova_libvirt_container:
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to nova.conf.
|
# Free form extra configuration to append to nova.conf.
|
||||||
kolla_extra_nova:
|
kolla_extra_nova:
|
||||||
|
|
||||||
@ -441,24 +783,29 @@ kolla_libvirt_tls:
|
|||||||
# libvirt on the host.
|
# libvirt on the host.
|
||||||
kolla_nova_libvirt_certificates_src:
|
kolla_nova_libvirt_certificates_src:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# OpenSearch configuration.
|
||||||
|
|
||||||
|
# Whether to enable OpenSearch.
|
||||||
|
kolla_enable_opensearch: false
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Octavia configuration.
|
# Octavia configuration.
|
||||||
|
|
||||||
# Whether to enable Octavia.
|
# Whether to enable Octavia.
|
||||||
kolla_enable_octavia:
|
kolla_enable_octavia: false
|
||||||
|
|
||||||
###############################################################################
|
# Deprecated:
|
||||||
# OpenSearch configuration.
|
# Free form extra configuration to append to octavia.conf
|
||||||
|
kolla_extra_octavia:
|
||||||
# Whether to enable opensearch.
|
|
||||||
kolla_enable_opensearch:
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Placement configuration.
|
# Placement configuration.
|
||||||
|
|
||||||
# Whether to enable placement.
|
# Whether to enable placement.
|
||||||
kolla_enable_placement:
|
kolla_enable_placement: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to placement.conf.
|
# Free form extra configuration to append to placement.conf.
|
||||||
kolla_extra_placement:
|
kolla_extra_placement:
|
||||||
|
|
||||||
@ -466,14 +813,15 @@ kolla_extra_placement:
|
|||||||
# Prometheus configuration.
|
# Prometheus configuration.
|
||||||
|
|
||||||
# Whether to enable Prometheus.
|
# Whether to enable Prometheus.
|
||||||
kolla_enable_prometheus:
|
kolla_enable_prometheus: false
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Sahara configuration.
|
# Sahara configuration.
|
||||||
|
|
||||||
# Whether to enable sahara.
|
# Whether to enable sahara.
|
||||||
kolla_enable_sahara:
|
kolla_enable_sahara: false
|
||||||
|
|
||||||
|
# Deprecated:
|
||||||
# Free form extra configuration to append to sahara.conf.
|
# Free form extra configuration to append to sahara.conf.
|
||||||
kolla_extra_sahara:
|
kolla_extra_sahara:
|
||||||
|
|
||||||
@ -481,4 +829,4 @@ kolla_extra_sahara:
|
|||||||
# Swift configuration.
|
# Swift configuration.
|
||||||
|
|
||||||
# Whether to enable swift.
|
# Whether to enable swift.
|
||||||
kolla_enable_swift:
|
kolla_enable_swift: false
|
||||||
|
@ -25,22 +25,15 @@ testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
|||||||
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
|
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
'path',
|
|
||||||
['fluentd/filter',
|
|
||||||
'fluentd/input',
|
|
||||||
'fluentd/output'])
|
|
||||||
def test_service_config_directory(host, path):
|
|
||||||
path = os.path.join('/etc/kolla/config', path)
|
|
||||||
utils.test_directory(host, path)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
'path',
|
'path',
|
||||||
['aodh',
|
['aodh',
|
||||||
'cinder',
|
'cinder',
|
||||||
'cloudkitty',
|
'cloudkitty',
|
||||||
'designate',
|
'designate',
|
||||||
|
'fluentd/filter',
|
||||||
|
'fluentd/input',
|
||||||
|
'fluentd/output',
|
||||||
'glance',
|
'glance',
|
||||||
'grafana',
|
'grafana',
|
||||||
'heat',
|
'heat',
|
||||||
|
@ -25,3 +25,8 @@
|
|||||||
until: docker_jobs.finished
|
until: docker_jobs.finished
|
||||||
retries: 300
|
retries: 300
|
||||||
with_items: "{{ server.results }}"
|
with_items: "{{ server.results }}"
|
||||||
|
|
||||||
|
- name: Clean up temporary path
|
||||||
|
file:
|
||||||
|
path: "{{ lookup('env', 'MOLECULE_TEMP_PATH') | default('/tmp/molecule', true) }}"
|
||||||
|
state: absent
|
||||||
|
@ -15,7 +15,16 @@ provisioner:
|
|||||||
inventory:
|
inventory:
|
||||||
group_vars:
|
group_vars:
|
||||||
all:
|
all:
|
||||||
kolla_extra_config_path: ${MOLECULE_TEMP_PATH:-/tmp}/molecule/kolla/config
|
kolla_extra_config_path: ${MOLECULE_TEMP_PATH:-/tmp/molecule}/kolla/config
|
||||||
|
kolla_openstack_custom_config_paths_extra:
|
||||||
|
- "{{ kolla_extra_config_path }}/../.."
|
||||||
|
kolla_openstack_custom_config_rules_extra:
|
||||||
|
- glob: aodh/dummy.yml
|
||||||
|
strategy: merge_yaml
|
||||||
|
priority: 1000
|
||||||
|
- glob: aodh/dummy.ini
|
||||||
|
strategy: merge_configs
|
||||||
|
priority: 1000
|
||||||
kolla_enable_aodh: true
|
kolla_enable_aodh: true
|
||||||
kolla_extra_aodh: |
|
kolla_extra_aodh: |
|
||||||
[extra-aodh.conf]
|
[extra-aodh.conf]
|
||||||
@ -44,6 +53,7 @@ provisioner:
|
|||||||
kolla_extra_designate: |
|
kolla_extra_designate: |
|
||||||
[extra-designate.conf]
|
[extra-designate.conf]
|
||||||
foo=bar
|
foo=bar
|
||||||
|
kolla_enable_fluentd: true
|
||||||
kolla_enable_glance: true
|
kolla_enable_glance: true
|
||||||
kolla_extra_glance: |
|
kolla_extra_glance: |
|
||||||
[extra-glance.conf]
|
[extra-glance.conf]
|
||||||
@ -72,8 +82,9 @@ provisioner:
|
|||||||
kolla_extra_inspector: |
|
kolla_extra_inspector: |
|
||||||
[extra-ironic-inspector.conf]
|
[extra-ironic-inspector.conf]
|
||||||
foo=bar
|
foo=bar
|
||||||
kolla_inspector_ipa_kernel_path: ${MOLECULE_TEMP_PATH:-/tmp}/ironic-agent.kernel
|
kolla_inspector_ipa_kernel_path: ${MOLECULE_TEMP_PATH:-/tmp/molecule}/ironic-agent.kernel
|
||||||
kolla_inspector_ipa_ramdisk_path: ${MOLECULE_TEMP_PATH:-/tmp}/ironic-agent.initramfs
|
kolla_inspector_ipa_ramdisk_path: ${MOLECULE_TEMP_PATH:-/tmp/molecule}/ironic-agent.initramfs
|
||||||
|
kolla_enable_keepalived: true
|
||||||
kolla_enable_keystone: true
|
kolla_enable_keystone: true
|
||||||
kolla_extra_keystone: |
|
kolla_extra_keystone: |
|
||||||
[extra-keystone.conf]
|
[extra-keystone.conf]
|
||||||
@ -119,7 +130,7 @@ provisioner:
|
|||||||
[extra-nova.conf]
|
[extra-nova.conf]
|
||||||
foo=bar
|
foo=bar
|
||||||
kolla_libvirt_tls: true
|
kolla_libvirt_tls: true
|
||||||
kolla_nova_libvirt_certificates_src: ${MOLECULE_TEMP_PATH:-/tmp}/molecule/nova-libvirt/certificates
|
kolla_nova_libvirt_certificates_src: ${MOLECULE_TEMP_PATH:-/tmp/molecule}/nova-libvirt/certificates
|
||||||
kolla_enable_octavia: true
|
kolla_enable_octavia: true
|
||||||
kolla_extra_octavia: |
|
kolla_extra_octavia: |
|
||||||
[extra-octavia.conf]
|
[extra-octavia.conf]
|
||||||
|
@ -26,6 +26,99 @@
|
|||||||
- "{{ kolla_inspector_ipa_kernel_path }}"
|
- "{{ kolla_inspector_ipa_kernel_path }}"
|
||||||
- "{{ kolla_inspector_ipa_ramdisk_path }}"
|
- "{{ kolla_inspector_ipa_ramdisk_path }}"
|
||||||
|
|
||||||
|
- name: Ensure parent directories of configuration files exist
|
||||||
|
file:
|
||||||
|
path: "{{ kolla_extra_config_path }}/{{ item }}"
|
||||||
|
state: directory
|
||||||
|
recurse: yes
|
||||||
|
delegate_to: localhost
|
||||||
|
run_once: true
|
||||||
|
with_items:
|
||||||
|
- neutron
|
||||||
|
- aodh
|
||||||
|
# To check that subdirectories are handled correctly
|
||||||
|
- prometheus/prometheus.yml.d
|
||||||
|
# Example of non-ini files that should be templated but not merged
|
||||||
|
- fluentd/input/
|
||||||
|
|
||||||
|
- name: Ensure extra INI configuration files exist
|
||||||
|
copy:
|
||||||
|
content: |
|
||||||
|
[extra-file-{{ item | basename }}]
|
||||||
|
bar=baz
|
||||||
|
dest: "{{ kolla_extra_config_path }}/{{ item }}"
|
||||||
|
run_once: true
|
||||||
|
delegate_to: localhost
|
||||||
|
loop:
|
||||||
|
- aodh.conf
|
||||||
|
- barbican.conf
|
||||||
|
- blazar.conf
|
||||||
|
- ceilometer.conf
|
||||||
|
- cinder.conf
|
||||||
|
- cloudkitty.conf
|
||||||
|
- designate.conf
|
||||||
|
- glance.conf
|
||||||
|
- global.conf
|
||||||
|
- gnocchi.conf
|
||||||
|
- grafana.ini
|
||||||
|
- heat.conf
|
||||||
|
- ironic.conf
|
||||||
|
- ironic-inspector.conf
|
||||||
|
- keystone.conf
|
||||||
|
- magnum.conf
|
||||||
|
- manila.conf
|
||||||
|
- murano.conf
|
||||||
|
- backup.my.cnf
|
||||||
|
- galera.cnf
|
||||||
|
- masakari.conf
|
||||||
|
- neutron.conf
|
||||||
|
- neutron/ml2_conf.ini
|
||||||
|
- nova.conf
|
||||||
|
- octavia.conf
|
||||||
|
- sahara.conf
|
||||||
|
- placement.conf
|
||||||
|
|
||||||
|
- name: Ensure extra YAML configuration files exist
|
||||||
|
copy:
|
||||||
|
content: |
|
||||||
|
dummy_variable: 123
|
||||||
|
dest: "{{ kolla_extra_config_path }}/{{ item }}"
|
||||||
|
run_once: true
|
||||||
|
delegate_to: localhost
|
||||||
|
loop:
|
||||||
|
- aodh/dummy.yml
|
||||||
|
- opensearch.yml
|
||||||
|
- prometheus/prometheus.yml.d/dummy.yml
|
||||||
|
|
||||||
|
- name: Template extra custom config files
|
||||||
|
# These correspond to globs defined in molecule.yml
|
||||||
|
copy:
|
||||||
|
content: "{{ item.content }}"
|
||||||
|
dest: "{{ kolla_extra_config_path }}/{{ item.dest }}"
|
||||||
|
run_once: true
|
||||||
|
delegate_to: localhost
|
||||||
|
with_items:
|
||||||
|
- dest: aodh/dummy.ini
|
||||||
|
content: |
|
||||||
|
[dummy-section]
|
||||||
|
dummy_variable = 123
|
||||||
|
- dest: fluentd/input/01-test.conf
|
||||||
|
content: |
|
||||||
|
<source>
|
||||||
|
@type tail
|
||||||
|
path /grepme
|
||||||
|
pos_file /var/run/td-agent/rabbit.pos
|
||||||
|
tag infra.rabbit
|
||||||
|
enable_watch_timer false
|
||||||
|
<parse>
|
||||||
|
@type multiline
|
||||||
|
format_firstline /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}/
|
||||||
|
format1 /^(?<Timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}) \[(?<log_level>\w+)\] (?<Payload>.*)/
|
||||||
|
</parse>
|
||||||
|
</source>
|
||||||
|
loop_control:
|
||||||
|
label: "{{ item.dest }}"
|
||||||
|
|
||||||
- name: Ensure nova libvirt certificates directory exists
|
- name: Ensure nova libvirt certificates directory exists
|
||||||
local_action:
|
local_action:
|
||||||
module: file
|
module: file
|
||||||
|
@ -19,46 +19,12 @@ from kayobe.tests.molecule import utils
|
|||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
import testinfra.utils.ansible_runner
|
import testinfra.utils.ansible_runner
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
|
||||||
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
|
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
|
||||||
'path',
|
|
||||||
['aodh',
|
|
||||||
'barbican',
|
|
||||||
'cinder',
|
|
||||||
'cloudkitty',
|
|
||||||
'designate',
|
|
||||||
'fluentd/filter',
|
|
||||||
'fluentd/input',
|
|
||||||
'fluentd/output',
|
|
||||||
'glance',
|
|
||||||
'grafana',
|
|
||||||
'heat',
|
|
||||||
'horizon',
|
|
||||||
'ironic',
|
|
||||||
'keystone',
|
|
||||||
'magnum',
|
|
||||||
'manila',
|
|
||||||
'mariadb',
|
|
||||||
'masakari',
|
|
||||||
'murano',
|
|
||||||
'neutron',
|
|
||||||
'nova',
|
|
||||||
'nova/nova-libvirt',
|
|
||||||
'octavia',
|
|
||||||
'placement',
|
|
||||||
'prometheus',
|
|
||||||
'sahara',
|
|
||||||
'swift'])
|
|
||||||
def test_service_config_directory(host, path):
|
|
||||||
path = os.path.join('/etc/kolla/config', path)
|
|
||||||
utils.test_directory(host, path)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
'path',
|
'path',
|
||||||
['aodh.conf',
|
['aodh.conf',
|
||||||
@ -87,11 +53,44 @@ def test_service_config_directory(host, path):
|
|||||||
'backup.my.cnf'])
|
'backup.my.cnf'])
|
||||||
def test_service_ini_file(host, path):
|
def test_service_ini_file(host, path):
|
||||||
# TODO(mgoddard): Check more of config file contents.
|
# TODO(mgoddard): Check more of config file contents.
|
||||||
|
# Tests config added with extra vars e.g kolla_extra_aodh. I.e the
|
||||||
|
# the internal role templates.
|
||||||
path = os.path.join('/etc/kolla/config', path)
|
path = os.path.join('/etc/kolla/config', path)
|
||||||
extra_section = 'extra-%s' % os.path.basename(path)
|
extra_section = 'extra-%s' % os.path.basename(path)
|
||||||
expected = {extra_section: {'foo': 'bar'}}
|
expected = {extra_section: {'foo': 'bar'}}
|
||||||
utils.test_ini_file(host, path, expected=expected)
|
utils.test_ini_file(host, path, expected=expected)
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'path',
|
||||||
|
['aodh.conf',
|
||||||
|
'barbican.conf',
|
||||||
|
'cinder.conf',
|
||||||
|
'cloudkitty.conf',
|
||||||
|
'designate.conf',
|
||||||
|
'galera.cnf',
|
||||||
|
'glance.conf',
|
||||||
|
'grafana.ini',
|
||||||
|
'heat.conf',
|
||||||
|
'ironic.conf',
|
||||||
|
'ironic-inspector.conf',
|
||||||
|
'keystone.conf',
|
||||||
|
'magnum.conf',
|
||||||
|
'manila.conf',
|
||||||
|
'masakari.conf',
|
||||||
|
'murano.conf',
|
||||||
|
'neutron/ml2_conf.ini',
|
||||||
|
'neutron.conf',
|
||||||
|
'nova.conf',
|
||||||
|
'octavia.conf',
|
||||||
|
'placement.conf',
|
||||||
|
'sahara.conf',
|
||||||
|
'backup.my.cnf'])
|
||||||
|
def test_service_ini_file_extra_confs(host, path):
|
||||||
|
# Tests config added via extra config files
|
||||||
|
path = os.path.join('/etc/kolla/config', path)
|
||||||
|
extra_section = 'extra-file-%s' % os.path.basename(path)
|
||||||
|
expected = {extra_section: {'bar': 'baz'}}
|
||||||
|
utils.test_ini_file(host, path, expected=expected)
|
||||||
|
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
'path',
|
'path',
|
||||||
@ -104,3 +103,30 @@ def test_service_non_ini_file(host, path):
|
|||||||
# TODO(mgoddard): Check config file contents.
|
# TODO(mgoddard): Check config file contents.
|
||||||
path = os.path.join('/etc/kolla/config', path)
|
path = os.path.join('/etc/kolla/config', path)
|
||||||
utils.test_file(host, path)
|
utils.test_file(host, path)
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'path,regex',
|
||||||
|
[('fluentd/input/01-test.conf', 'grepme')])
|
||||||
|
def test_service_non_ini_file_regex(host, path, regex):
|
||||||
|
path = os.path.join('/etc/kolla/config', path)
|
||||||
|
utils.test_regex_in_file(host, path, regex=regex)
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
'relative_path',
|
||||||
|
['aodh/dummy.yml',
|
||||||
|
'opensearch.yml',
|
||||||
|
'prometheus/prometheus.yml.d/dummy.yml'])
|
||||||
|
def test_service_extra_yml_config(host, relative_path):
|
||||||
|
path = os.path.join('/etc/kolla/config', relative_path)
|
||||||
|
utils.test_file(host, path)
|
||||||
|
content = yaml.safe_load(host.file(path).content_string)
|
||||||
|
assert content["dummy_variable"] == 123
|
||||||
|
|
||||||
|
def test_service_extra_ini_config(host):
|
||||||
|
relative_path = "aodh/dummy.ini"
|
||||||
|
path = os.path.join('/etc/kolla/config', relative_path)
|
||||||
|
utils.test_file(host, path)
|
||||||
|
expected = {
|
||||||
|
"dummy-section": {"dummy_variable": "123"}
|
||||||
|
}
|
||||||
|
utils.test_ini_file(host, path, expected=expected)
|
||||||
|
@ -1,48 +1,4 @@
|
|||||||
---
|
---
|
||||||
- name: Ensure the Kolla OpenStack configuration directories exist
|
|
||||||
file:
|
|
||||||
path: "{{ item.dest }}"
|
|
||||||
state: directory
|
|
||||||
mode: 0750
|
|
||||||
with_items: "{{ kolla_openstack_custom_config }}"
|
|
||||||
when: item.enabled | bool
|
|
||||||
|
|
||||||
- name: Ensure the Kolla OpenStack configuration files exist
|
|
||||||
template:
|
|
||||||
src: "{{ item.src }}"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/{{ item.dest }}"
|
|
||||||
mode: 0640
|
|
||||||
with_items:
|
|
||||||
- { src: aodh.conf.j2, dest: aodh.conf, enabled: "{{ kolla_enable_aodh }}" }
|
|
||||||
- { src: barbican.conf.j2, dest: barbican.conf, enabled: "{{ kolla_enable_barbican }}" }
|
|
||||||
- { src: blazar.conf.j2, dest: blazar.conf, enabled: "{{ kolla_enable_blazar }}" }
|
|
||||||
- { src: ceilometer.conf.j2, dest: ceilometer.conf, enabled: "{{ kolla_enable_ceilometer }}" }
|
|
||||||
- { src: cinder.conf.j2, dest: cinder.conf, enabled: "{{ kolla_enable_cinder }}" }
|
|
||||||
- { src: cloudkitty.conf.j2, dest: cloudkitty.conf, enabled: "{{ kolla_enable_cloudkitty }}" }
|
|
||||||
- { src: designate.conf.j2, dest: designate.conf, enabled: "{{ kolla_enable_designate }}" }
|
|
||||||
- { src: galera.cnf.j2, dest: galera.cnf, enabled: "{{ kolla_enable_mariadb }}" }
|
|
||||||
- { src: glance.conf.j2, dest: glance.conf, enabled: "{{ kolla_enable_glance }}" }
|
|
||||||
- { src: global.conf.j2, dest: global.conf, enabled: true }
|
|
||||||
- { src: gnocchi.conf.j2, dest: gnocchi.conf, enabled: "{{ kolla_enable_gnocchi }}" }
|
|
||||||
- { src: grafana.ini.j2, dest: grafana.ini, enabled: "{{ kolla_enable_grafana }}" }
|
|
||||||
- { src: heat.conf.j2, dest: heat.conf, enabled: "{{ kolla_enable_heat }}" }
|
|
||||||
- { src: ironic.conf.j2, dest: ironic.conf, enabled: "{{ kolla_enable_ironic }}" }
|
|
||||||
- { src: ironic-inspector.conf.j2, dest: ironic-inspector.conf, enabled: "{{ kolla_enable_ironic }}" }
|
|
||||||
- { src: keystone.conf.j2, dest: keystone.conf, enabled: "{{ kolla_enable_keystone }}" }
|
|
||||||
- { src: magnum.conf.j2, dest: magnum.conf, enabled: "{{ kolla_enable_magnum }}" }
|
|
||||||
- { src: manila.conf.j2, dest: manila.conf, enabled: "{{ kolla_enable_manila }}" }
|
|
||||||
- { src: backup.my.cnf.j2, dest: backup.my.cnf, enabled: "{{ kolla_enable_mariabackup }}" }
|
|
||||||
- { src: masakari.conf.j2, dest: masakari.conf, enabled: "{{ kolla_enable_masakari }}" }
|
|
||||||
- { src: ml2_conf.ini.j2, dest: neutron/ml2_conf.ini, enabled: "{{ kolla_enable_neutron }}" }
|
|
||||||
- { src: multipath.conf.j2, dest: multipath.conf, enabled: "{{ kolla_enable_multipathd }}" }
|
|
||||||
- { src: murano.conf.j2, dest: murano.conf, enabled: "{{ kolla_enable_murano }}" }
|
|
||||||
- { src: neutron.conf.j2, dest: neutron.conf, enabled: "{{ kolla_enable_neutron }}" }
|
|
||||||
- { src: nova.conf.j2, dest: nova.conf, enabled: "{{ kolla_enable_nova }}" }
|
|
||||||
- { src: octavia.conf.j2, dest: octavia.conf, enabled: "{{ kolla_enable_octavia }}" }
|
|
||||||
- { src: placement.conf.j2, dest: placement.conf, enabled: "{{ kolla_enable_placement }}" }
|
|
||||||
- { src: sahara.conf.j2, dest: sahara.conf, enabled: "{{ kolla_enable_sahara }}" }
|
|
||||||
when: item.enabled | bool
|
|
||||||
|
|
||||||
- name: Ensure ironic inspector kernel and ramdisk images are present
|
- name: Ensure ironic inspector kernel and ramdisk images are present
|
||||||
vars:
|
vars:
|
||||||
image_download_url: "{{ item.url }}"
|
image_download_url: "{{ item.url }}"
|
||||||
@ -67,84 +23,110 @@
|
|||||||
loop_control:
|
loop_control:
|
||||||
label: "{{ item.dest }}"
|
label: "{{ item.dest }}"
|
||||||
|
|
||||||
|
- name: Make destination directory for Nova certificates
|
||||||
|
file:
|
||||||
|
state: directory
|
||||||
|
path: "{{ kolla_node_custom_config_path }}/nova/nova-libvirt/"
|
||||||
|
when: kolla_enable_nova | bool and kolla_libvirt_tls | bool
|
||||||
|
|
||||||
|
- name: Copy client TLS certificates for Nova
|
||||||
|
vars:
|
||||||
|
certificates:
|
||||||
|
- clientcert.pem
|
||||||
|
- clientkey.pem
|
||||||
|
- cacert.pem
|
||||||
|
copy:
|
||||||
|
src: "{{ kolla_nova_libvirt_certificates_src }}/{{ item }}"
|
||||||
|
dest: "{{ kolla_node_custom_config_path }}/nova/nova-libvirt/{{ item }}"
|
||||||
|
loop: "{{ certificates if kolla_enable_nova | bool and kolla_libvirt_tls | bool else [] }}"
|
||||||
|
|
||||||
|
- name: Copy server TLS certificates for Nova
|
||||||
|
vars:
|
||||||
|
certificates:
|
||||||
|
- servercert.pem
|
||||||
|
- serverkey.pem
|
||||||
|
copy:
|
||||||
|
src: "{{ kolla_nova_libvirt_certificates_src }}/{{ item }}"
|
||||||
|
dest: "{{ kolla_node_custom_config_path }}/nova/nova-libvirt/{{ item }}"
|
||||||
|
loop: "{{ certificates if kolla_enable_nova | bool and kolla_enable_nova_libvirt_container | bool and kolla_libvirt_tls | bool else [] }}"
|
||||||
|
|
||||||
# We support a fairly flexible mechanism of dropping config file templates into
|
# We support a fairly flexible mechanism of dropping config file templates into
|
||||||
# an 'extra' config directory, and passing these through to kolla-ansible. We
|
# an 'extra' config directory, and passing these through to kolla-ansible. We
|
||||||
# look for matching files in the source directory to template, and also remove
|
# look for matching files in the source directory to template, and also remove
|
||||||
# any unexpected files from the destination, to support removal of files.
|
# any unexpected files from the destination, to support removal of files.
|
||||||
|
|
||||||
- name: Find extra configuration files
|
- name: Collect details about custom config
|
||||||
find:
|
kolla_custom_config_info:
|
||||||
path: "{{ item.src }}"
|
destination: "{{ kolla_node_custom_config_path }}"
|
||||||
patterns: "{{ item.patterns }}"
|
ignore_globs: "{{ _kolla_openstack_custom_config_cleanup_ignore_globs }}"
|
||||||
recurse: true
|
include_globs: "{{ kolla_openstack_custom_config_include_globs }}"
|
||||||
with_items: "{{ kolla_openstack_custom_config }}"
|
rules: "{{ kolla_openstack_custom_config_rules }}"
|
||||||
register: find_src_result
|
search_paths: "{{ kolla_openstack_custom_config_paths | product(['/kolla/config']) | map('join') | list }}"
|
||||||
delegate_to: localhost
|
register: kolla_custom_config_info
|
||||||
|
|
||||||
- name: Find previously generated extra configuration files
|
- name: Print kolla_custom_config_info when using -v
|
||||||
find:
|
debug:
|
||||||
path: "{{ item.dest }}"
|
msg: "{{ kolla_custom_config_info }}"
|
||||||
patterns: "{{ item.patterns }}"
|
verbosity: 1
|
||||||
with_items: "{{ kolla_openstack_custom_config }}"
|
|
||||||
register: find_dest_result
|
|
||||||
|
|
||||||
- name: Ensure extra configuration parent directories are present
|
- name: Ensure extra configuration parent directories are present
|
||||||
file:
|
file:
|
||||||
path: "{{ item.0.item.dest }}/{{ item.1.path | relpath(item.0.item.src) | dirname }}"
|
path: "{{ item }}"
|
||||||
|
recurse: true
|
||||||
state: directory
|
state: directory
|
||||||
mode: 0750
|
with_items: "{{ kolla_custom_config_info.create_dir }}"
|
||||||
with_subelements:
|
|
||||||
- "{{ find_src_result.results }}"
|
|
||||||
- files
|
|
||||||
- skip_missing: true
|
|
||||||
when:
|
|
||||||
- item.0.item.enabled | bool
|
|
||||||
- item.1.path | basename not in item.0.item.ignore | default([])
|
|
||||||
|
|
||||||
- name: Ensure templated extra configuration files exist
|
- name: "Ensure extra configuration files exist (strategy: template)"
|
||||||
template:
|
vars:
|
||||||
src: "{{ item.1.path }}"
|
params:
|
||||||
dest: "{{ item.0.item.dest }}/{{ item.1.path | relpath(item.0.item.src) }}"
|
src: "{{ item.src }}"
|
||||||
mode: 0640
|
dest: "{{ item.dest }}"
|
||||||
with_subelements:
|
mode: 0640
|
||||||
- "{{ find_src_result.results }}"
|
template: "{{ params | combine(item.params) }}"
|
||||||
- files
|
with_items: "{{ kolla_custom_config_info.template }}"
|
||||||
- skip_missing: true
|
|
||||||
when:
|
|
||||||
- item.0.item.enabled | bool
|
|
||||||
- item.1.path | basename not in item.0.item.ignore | default([])
|
|
||||||
- item.1.path | basename not in item.0.item.untemplated | default([])
|
|
||||||
- (item.1.path | dirname | relpath(item.0.item.src)).split("/")[0] not in item.0.item.untemplated_dirs | default([])
|
|
||||||
|
|
||||||
- name: Ensure untemplated extra configuration files exist
|
- name: "Ensure extra configuration files exist (strategy: copy)"
|
||||||
copy:
|
vars:
|
||||||
src: "{{ item.1.path }}"
|
params:
|
||||||
dest: "{{ item.0.item.dest }}/{{ item.1.path | relpath(item.0.item.src) }}"
|
src: "{{ item.src }}"
|
||||||
mode: 0640
|
dest: "{{ item.dest }}"
|
||||||
with_subelements:
|
mode: 0640
|
||||||
- "{{ find_src_result.results }}"
|
copy: "{{ params | combine(item.params) }}"
|
||||||
- files
|
# NOTE: .copy is ambiguous with copy method
|
||||||
- skip_missing: true
|
with_items: "{{ kolla_custom_config_info['copy'] }}"
|
||||||
when:
|
|
||||||
- item.0.item.enabled | bool
|
- name: "Ensure extra configuration files exist (strategy: merge_configs)"
|
||||||
- item.1.path | basename not in item.0.item.ignore | default([])
|
vars:
|
||||||
- (item.1.path | basename in item.0.item.untemplated | default([])) or
|
params:
|
||||||
((item.1.path | dirname | relpath(item.0.item.src)).split("/")[0] in item.0.item.untemplated_dirs | default([]))
|
sources: "{{ item.sources }}"
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
mode: 0640
|
||||||
|
merge_configs: "{{ params | combine(item.params) }}"
|
||||||
|
with_items: "{{ kolla_custom_config_info.merge_configs }}"
|
||||||
|
|
||||||
|
- name: "Ensure extra configuration files exist (strategy: merge_yaml)"
|
||||||
|
vars:
|
||||||
|
params:
|
||||||
|
sources: "{{ item.sources }}"
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
mode: 0640
|
||||||
|
merge_yaml: "{{ params | combine(item.params) }}"
|
||||||
|
with_items: "{{ kolla_custom_config_info.merge_yaml }}"
|
||||||
|
|
||||||
|
- name: "Ensure extra configuration files exist (strategy: concat)"
|
||||||
|
vars:
|
||||||
|
params:
|
||||||
|
content: |
|
||||||
|
{%- for path in item.sources -%}
|
||||||
|
{{ lookup('template', path) }}
|
||||||
|
{%- endfor -%}
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
mode: 0640
|
||||||
|
copy: "{{ params | combine(item.params) }}"
|
||||||
|
with_items: "{{ kolla_custom_config_info.concat }}"
|
||||||
|
|
||||||
- name: Ensure unnecessary extra configuration files are absent
|
- name: Ensure unnecessary extra configuration files are absent
|
||||||
file:
|
file:
|
||||||
path: "{{ item.1.path }}"
|
path: "{{ item }}"
|
||||||
state: absent
|
state: absent
|
||||||
with_subelements:
|
with_items: "{{ kolla_custom_config_info.delete }}"
|
||||||
- "{{ find_dest_result.results }}"
|
|
||||||
- files
|
|
||||||
- skip_missing: true
|
|
||||||
when:
|
|
||||||
- not item.0.item.enabled or
|
|
||||||
item.1.path | basename not in src_files
|
|
||||||
- item.1.path | basename not in item.0.item.ignore | default([])
|
|
||||||
vars:
|
|
||||||
# Find the source result that corresponds to this one.
|
|
||||||
src_result: "{{ (find_src_result.results | selectattr('item', 'equalto', item.0.item) | list)[0] }}"
|
|
||||||
# Find the list of files in the source.
|
|
||||||
src_files: "{{ src_result.files | map(attribute='path') | map('basename') | list }}"
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_aodh %}
|
{% if kolla_extra_aodh %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_mariabackup %}
|
{% if kolla_extra_mariabackup %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_barbican %}
|
{% if kolla_extra_barbican %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_blazar %}
|
{% if kolla_extra_blazar %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_ceilometer %}
|
{% if kolla_extra_ceilometer %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_cinder %}
|
{% if kolla_extra_cinder %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_cloudkitty %}
|
{% if kolla_extra_cloudkitty %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_designate %}
|
{% if kolla_extra_designate %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_mariadb %}
|
{% if kolla_extra_mariadb %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_glance %}
|
{% if kolla_extra_glance %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_global %}
|
{% if kolla_extra_global %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_gnocchi %}
|
{% if kolla_extra_gnocchi %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_grafana %}
|
{% if kolla_extra_grafana %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_heat %}
|
{% if kolla_extra_heat %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
enabled_hardware_types: {{ kolla_ironic_enabled_hardware_types | join(',') }}
|
enabled_hardware_types: {{ kolla_ironic_enabled_hardware_types | join(',') }}
|
||||||
|
|
@ -1,4 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
{% if kolla_extra_keystone %}
|
{% if kolla_extra_keystone %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_magnum %}
|
{% if kolla_extra_magnum %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_manila %}
|
{% if kolla_extra_manila %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_masakari %}
|
{% if kolla_extra_masakari %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_murano %}
|
{% if kolla_extra_murano %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_neutron %}
|
{% if kolla_extra_neutron %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
[ml2]
|
[ml2]
|
||||||
{% if kolla_neutron_ml2_mechanism_drivers %}
|
{% if kolla_neutron_ml2_mechanism_drivers %}
|
||||||
mechanism_drivers = {{ kolla_neutron_ml2_mechanism_drivers | join(',') }}
|
mechanism_drivers = {{ kolla_neutron_ml2_mechanism_drivers | join(',') }}
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_nova %}
|
{% if kolla_extra_nova %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_octavia %}
|
{% if kolla_extra_octavia %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_placement %}
|
{% if kolla_extra_placement %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,5 +1,3 @@
|
|||||||
# {{ ansible_managed }}
|
|
||||||
|
|
||||||
{% if kolla_extra_sahara %}
|
{% if kolla_extra_sahara %}
|
||||||
#######################
|
#######################
|
||||||
# Extra configuration
|
# Extra configuration
|
@ -1,222 +1,16 @@
|
|||||||
---
|
---
|
||||||
# List of custom configuration directories.
|
|
||||||
# Each item is a dict containing the following items:
|
# An internal variable used for cleaning files from the generated config
|
||||||
# src: Path to directory containing configuration file templates.
|
# directory. Should not be exposed as we may wish to change the cleanup
|
||||||
# dest: Path to directory in which generated files will be created.
|
# mechanism to something more robust.
|
||||||
# patterns: One or more file name patterns to match.
|
_kolla_openstack_custom_config_cleanup_ignore_globs:
|
||||||
# enabled: Whether these files should be templated.
|
- glob: ironic/ironic-agent.initramfs
|
||||||
# ignore: Optional list of files to ignore. These files will not be copied to
|
enabled: "{{ kolla_enable_ironic | bool }}"
|
||||||
# the destination, and will not be removed from the destination, even
|
- glob: ironic/ironic-agent.kernel
|
||||||
# if disabled or unexpected.
|
enabled: "{{ kolla_enable_ironic | bool }}"
|
||||||
kolla_openstack_custom_config:
|
- glob: nova/nova-libvirt/server*.pem
|
||||||
# Aodh.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/aodh"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/aodh"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_aodh }}"
|
|
||||||
# Barbican.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/barbican"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/barbican"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_barbican }}"
|
|
||||||
# Blazar.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/blazar"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/blazar"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_blazar }}"
|
|
||||||
# Ceilometer.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/ceilometer"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/ceilometer"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_ceilometer }}"
|
|
||||||
# Cinder.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/cinder"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/cinder"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_cinder }}"
|
|
||||||
# CloudKitty.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/cloudkitty"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/cloudkitty"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_cloudkitty }}"
|
|
||||||
# Designate.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/designate"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/designate"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_designate }}"
|
|
||||||
# Fluentd filters.
|
|
||||||
- src: "{{ kolla_extra_config_path }}//fluentd/filter"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/fluentd/filter"
|
|
||||||
patterns: "*.conf"
|
|
||||||
enabled: true
|
|
||||||
# Fluentd inputs.
|
|
||||||
- src: "{{ kolla_extra_config_path }}//fluentd/input"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/fluentd/input"
|
|
||||||
patterns: "*.conf"
|
|
||||||
enabled: true
|
|
||||||
# Fluentd outputs.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/fluentd/output"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/fluentd/output"
|
|
||||||
patterns: "*.conf"
|
|
||||||
enabled: true
|
|
||||||
# Glance.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/glance"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/glance"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_glance }}"
|
|
||||||
# Gnocchi.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/gnocchi"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/gnocchi"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_gnocchi }}"
|
|
||||||
# Grafana.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/grafana"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/grafana"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_grafana }}"
|
|
||||||
# HAProxy.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/haproxy"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/haproxy"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_haproxy }}"
|
|
||||||
- src: "{{ kolla_extra_config_path }}/haproxy-config"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/haproxy-config"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_haproxy }}"
|
|
||||||
# Heat.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/heat"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/heat"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_heat }}"
|
|
||||||
# Horizon.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/horizon"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/horizon"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_horizon }}"
|
|
||||||
untemplated_dirs:
|
|
||||||
# Do not attempt to template themes directory.
|
|
||||||
- "themes"
|
|
||||||
# InfluxDB.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/"
|
|
||||||
patterns: "influx*"
|
|
||||||
enabled: "{{ kolla_enable_influxdb }}"
|
|
||||||
# Ironic.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/ironic"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/ironic"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_ironic }}"
|
|
||||||
ignore:
|
|
||||||
# These are templated by kayobe, so don't remove them.
|
|
||||||
- ironic-agent.initramfs
|
|
||||||
- ironic-agent.kernel
|
|
||||||
# Keystone.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/keystone"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/keystone"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_keystone }}"
|
|
||||||
# Keepalived.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/keepalived"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/keepalived"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_haproxy }}"
|
|
||||||
# Magnum.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/magnum"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/magnum"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_magnum }}"
|
|
||||||
# Manila.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/manila"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/manila"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_manila }}"
|
|
||||||
# MariaDB.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/mariadb"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/mariadb"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_mariadb }}"
|
|
||||||
# Masakari.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/masakari"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/masakari"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_masakari }}"
|
|
||||||
# Murano.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/murano"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/murano"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_murano }}"
|
|
||||||
# Neutron.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/neutron"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/neutron"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_neutron }}"
|
|
||||||
ignore:
|
|
||||||
# These are templated by kayobe, so don't remove them.
|
|
||||||
- ml2_conf.ini
|
|
||||||
# Nova.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/nova"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/nova"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_nova }}"
|
|
||||||
- src: "{{ kolla_extra_config_path }}/nova_compute"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/nova_compute"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_nova }}"
|
|
||||||
- src: "{{ kolla_nova_libvirt_certificates_src }}"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/nova/nova-libvirt"
|
|
||||||
patterns:
|
|
||||||
- clientcert.pem
|
|
||||||
- clientkey.pem
|
|
||||||
- cacert.pem
|
|
||||||
enabled: "{{ kolla_enable_nova | bool and kolla_libvirt_tls | bool }}"
|
|
||||||
untemplated:
|
|
||||||
- clientcert.pem
|
|
||||||
- clientkey.pem
|
|
||||||
- cacert.pem
|
|
||||||
- src: "{{ kolla_nova_libvirt_certificates_src }}"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/nova/nova-libvirt"
|
|
||||||
patterns:
|
|
||||||
- servercert.pem
|
|
||||||
- serverkey.pem
|
|
||||||
enabled: "{{ kolla_enable_nova | bool and kolla_enable_nova_libvirt_container | bool and kolla_libvirt_tls | bool }}"
|
enabled: "{{ kolla_enable_nova | bool and kolla_enable_nova_libvirt_container | bool and kolla_libvirt_tls | bool }}"
|
||||||
untemplated:
|
- glob: nova/nova-libvirt/client*.pem
|
||||||
- servercert.pem
|
enabled: "{{ kolla_enable_nova | bool and kolla_libvirt_tls | bool }}"
|
||||||
- serverkey.pem
|
- glob: nova/nova-libvirt/cacert.pem
|
||||||
# Octavia.
|
enabled: "{{ kolla_enable_nova | bool and kolla_libvirt_tls | bool }}"
|
||||||
- src: "{{ kolla_extra_config_path }}/octavia"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/octavia"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_octavia }}"
|
|
||||||
# OpenSearch.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/opensearch"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/opensearch"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_opensearch }}"
|
|
||||||
# Placement
|
|
||||||
- src: "{{ kolla_extra_config_path }}/placement"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/placement"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_placement }}"
|
|
||||||
# Prometheus config
|
|
||||||
- src: "{{ kolla_extra_config_path }}/prometheus"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/prometheus"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_prometheus }}"
|
|
||||||
# Sahara.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/sahara"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/sahara"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_sahara }}"
|
|
||||||
# Swift.
|
|
||||||
- src: "{{ kolla_extra_config_path }}/swift"
|
|
||||||
dest: "{{ kolla_node_custom_config_path }}/swift"
|
|
||||||
patterns: "*"
|
|
||||||
enabled: "{{ kolla_enable_swift }}"
|
|
||||||
untemplated:
|
|
||||||
# These are binary files, and should not be templated.
|
|
||||||
- account.builder
|
|
||||||
- account.ring.gz
|
|
||||||
- container.builder
|
|
||||||
- container.ring.gz
|
|
||||||
- object.builder
|
|
||||||
- object.ring.gz
|
|
||||||
|
@ -177,10 +177,8 @@ Kolla Configuration
|
|||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
In the Wallaby release, Kolla configuration was independent in each
|
In the Wallaby release, Kolla configuration was independent in each
|
||||||
environment.
|
environment. The Xena release supported combining environment-specific
|
||||||
|
and shared configuration file content for the following subset of the files:
|
||||||
As of the Xena release, the following files support combining the
|
|
||||||
environment-specific and shared configuration file content:
|
|
||||||
|
|
||||||
* ``kolla/config/bifrost/bifrost.yml``
|
* ``kolla/config/bifrost/bifrost.yml``
|
||||||
* ``kolla/config/bifrost/dib.yml``
|
* ``kolla/config/bifrost/dib.yml``
|
||||||
@ -189,8 +187,156 @@ environment-specific and shared configuration file content:
|
|||||||
* ``kolla/kolla-build.conf``
|
* ``kolla/kolla-build.conf``
|
||||||
* ``kolla/repos.yml`` or ``kolla/repos.yaml``
|
* ``kolla/repos.yml`` or ``kolla/repos.yaml``
|
||||||
|
|
||||||
Options in the environment-specific files take precedence over those in the
|
The Antelope release expands upon this list to add support for combining Kolla
|
||||||
shared files.
|
Ansible custom service configuration. This behaviour is configured using two
|
||||||
|
variables:
|
||||||
|
|
||||||
|
* ``kolla_openstack_custom_config_include_globs``: Specifies which files are
|
||||||
|
considered when templating the Kolla configuration. The Kayobe defaults
|
||||||
|
are set using ``kolla_openstack_custom_config_include_globs_default``.
|
||||||
|
An optional list of additional globs can be set using:
|
||||||
|
``kolla_openstack_custom_config_include_globs_extra``. These are
|
||||||
|
combined with ``kolla_openstack_custom_config_include_globs_default``
|
||||||
|
to produce ``kolla_openstack_custom_config_include_globs``.
|
||||||
|
Each list entry is a dictionary with the following keys:
|
||||||
|
|
||||||
|
* ``enabled``: Boolean which determines if this rule is used. Set to
|
||||||
|
``false`` to disable the rule.
|
||||||
|
* ``glob``: String glob matching a relative path in the ``kolla/config``
|
||||||
|
directory
|
||||||
|
|
||||||
|
An example of such a rule:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
enabled: '{{ kolla_enable_aodh | bool }}'
|
||||||
|
glob: aodh/**
|
||||||
|
|
||||||
|
* ``kolla_openstack_custom_config_rules``: List of rules that specify the
|
||||||
|
strategy to use when generating a particular file. The Kayobe defaults
|
||||||
|
are set using ``kolla_openstack_custom_config_rules_default``.
|
||||||
|
An optional list of additional rules can be set using:
|
||||||
|
``kolla_openstack_custom_config_rules_extra``. These are
|
||||||
|
combined with ``kolla_openstack_custom_config_rules_default``
|
||||||
|
to produce ``kolla_openstack_custom_config_rules``.
|
||||||
|
Each list entry is a dictionary with the format:
|
||||||
|
|
||||||
|
* ``glob``: A glob matching files for this rule to match on (relative to the
|
||||||
|
search path)
|
||||||
|
* ``priority``: The rules are processed in increasing priority order with the
|
||||||
|
first rule matching taking effect
|
||||||
|
* ``strategy``: How to process the matched file. One of ``copy``,
|
||||||
|
``concat``, ``template``, ``merge_configs``, ``merge_yaml``
|
||||||
|
* ``params``: Optional list of additional params to pass to module enacting
|
||||||
|
the strategy
|
||||||
|
|
||||||
|
An example of such a rule:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
glob: a/path/test.yml
|
||||||
|
strategy: merge_yaml
|
||||||
|
priority: 1000
|
||||||
|
params:
|
||||||
|
extend_lists: true
|
||||||
|
|
||||||
|
The Kayobe defaults fallback to using the ``template`` strategy, with a
|
||||||
|
priority of 65535. To override this behaviour configure a rule with a lower
|
||||||
|
priority e.g:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
glob: horizon/themes/**
|
||||||
|
strategy: copy
|
||||||
|
priority: 1000
|
||||||
|
|
||||||
|
The default INI merging strategy can be configured using:
|
||||||
|
``kolla_openstack_custom_config_ini_merge_strategy_default``. It defaults to ``concat``
|
||||||
|
for backwards compatibility. An alternative strategy is ``merge_configs`` which will
|
||||||
|
merge the two INI files so that values set in the environment take precedence over values
|
||||||
|
set in the shared files. The caveat with the ``merge_configs`` strategy is that files
|
||||||
|
must template to valid INI. This is mostly an issue when you use raw Jinja
|
||||||
|
tags, for example:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[defaults]
|
||||||
|
{% raw %}
|
||||||
|
{% if inventory_hostname in 'compute' %}
|
||||||
|
foo=bar
|
||||||
|
{% else %}
|
||||||
|
foo=baz
|
||||||
|
{% endif %}
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
After the first round of templating by Kayobe the raw tags are stripped. This leaves:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[defaults]
|
||||||
|
{% if inventory_hostname in 'compute' %}
|
||||||
|
foo=bar
|
||||||
|
{% else %}
|
||||||
|
foo=baz
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
Which isn't valid INI (due to the Jinja if blocks) and cannot be merged. In most cases
|
||||||
|
the templating can be refactored:
|
||||||
|
|
||||||
|
.. code-block:: ini
|
||||||
|
|
||||||
|
[defaults]
|
||||||
|
{% raw %}
|
||||||
|
foo={{ 'bar' if inventory_hostname in 'compute' else 'baz' }}
|
||||||
|
{% endraw %}
|
||||||
|
|
||||||
|
Alternatively, you can use Kolla host or group variables.
|
||||||
|
|
||||||
|
Disabling the default rules
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
There are some convenience variables to disable a subset of the
|
||||||
|
rules in ``kolla_openstack_custom_config_rules_default``:
|
||||||
|
|
||||||
|
* ``kolla_openstack_custom_config_rules_default_remove``: Allows you remove
|
||||||
|
a rule by matching on the glob:
|
||||||
|
|
||||||
|
.. code-block:: yaml
|
||||||
|
|
||||||
|
kolla_openstack_custom_config_rules_default_remove:
|
||||||
|
- "**/*.ini"
|
||||||
|
|
||||||
|
* ``kolla_openstack_custom_config_merge_configs_enabled``: Enables rules for
|
||||||
|
matching INI files. Default is ``true``.
|
||||||
|
|
||||||
|
* ``kolla_openstack_custom_config_merge_yaml_enabled``: Enables rules for
|
||||||
|
matching YAML files. Default is ``true``.
|
||||||
|
|
||||||
|
These allow you to more easily keep in sync with the upstream defaults. If
|
||||||
|
you had an override on ``kolla_openstack_custom_config_rules``, that
|
||||||
|
replicated most of ``kolla_openstack_custom_config_rules_default`` you'd have
|
||||||
|
to keep this in sync with the upstream kayobe defaults.
|
||||||
|
|
||||||
|
Search paths
|
||||||
|
^^^^^^^^^^^^
|
||||||
|
|
||||||
|
When merging config files the following locations are "searched" to find
|
||||||
|
files with an identical relative path:
|
||||||
|
|
||||||
|
- ``<environment-path>/kolla/config``
|
||||||
|
- ``<shared-files-path>/kolla/config``
|
||||||
|
- ``<kolla-openstack-role-path>/templates/kolla/config``
|
||||||
|
|
||||||
|
Not all strategies use all of the files when generating the kolla config.
|
||||||
|
For instance, the copy strategy will use the first file found when searching
|
||||||
|
each of the paths.
|
||||||
|
|
||||||
|
There is a feature flag: ``kolla_openstack_custom_config_environment_merging_enabled``,
|
||||||
|
that may be set to ``false`` to prevent Kayobe searching the shared files path
|
||||||
|
when merging configs. This is to replicate the legacy behaviour where the
|
||||||
|
environment Kolla custom service configuration was not merged with the base
|
||||||
|
layer. We still merge the files with Kayobe's defaults in the
|
||||||
|
``kolla-openstack`` role's internal templates.
|
||||||
|
|
||||||
Managing Independent Environment Files
|
Managing Independent Environment Files
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
@ -447,6 +447,79 @@
|
|||||||
#kolla_enable_watcher:
|
#kolla_enable_watcher:
|
||||||
#kolla_enable_zun:
|
#kolla_enable_zun:
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Kolla custom config generation.
|
||||||
|
|
||||||
|
# Feature flag to add $KAYOBE_CONFIG_PATH to the list of search paths used
|
||||||
|
# when searching for Kolla custom service configuration. Only has an effect in
|
||||||
|
# a multiple environments setup. This allows you to configure merging between
|
||||||
|
# your environment and the base layer. Defaults to true. Set to false to for
|
||||||
|
# backwards compatability.
|
||||||
|
#kolla_openstack_custom_config_environment_merging_enabled:
|
||||||
|
|
||||||
|
# Default value for kolla_openstack_custom_config_include_globs.
|
||||||
|
#kolla_openstack_custom_config_include_globs_default:
|
||||||
|
|
||||||
|
# Extra items to add to kolla_openstack_custom_config_include_globs_default
|
||||||
|
# to produce kolla_openstack_custom_config_include_globs.
|
||||||
|
#kolla_openstack_custom_config_include_globs_extra:
|
||||||
|
|
||||||
|
# List of dictionaries with the following keys:
|
||||||
|
# glob: a glob pattern. Any files matching this pattern will be copied to the
|
||||||
|
# the kolla custom config directory
|
||||||
|
# enabled: boolean to disable the glob.
|
||||||
|
# This determines the list of files to copy to the generated kolla config
|
||||||
|
# directory.
|
||||||
|
#kolla_openstack_custom_config_include_globs:
|
||||||
|
|
||||||
|
# Kolla config generation rules. These operate on the list of files produced by
|
||||||
|
# applying kolla_openstack_custom_config_include_globs. Each of the paths in
|
||||||
|
# kolla_openstack_custom_config_paths is searched for files matching one of the
|
||||||
|
# globs. If a match is found, any files with the same relative path are grouped
|
||||||
|
# together. The rules determine what to do with these matching files e.g copy
|
||||||
|
# the most specific file without templating, merge the files with
|
||||||
|
# merge_configs, etc.
|
||||||
|
# List of dictionaries with the following keys:
|
||||||
|
# glob: A glob matching files for this rule to match on (relative to the
|
||||||
|
# search path)
|
||||||
|
# priority: The rules are processed in increasing priority order with the
|
||||||
|
# first rule matching taking effect.
|
||||||
|
# strategy: How to process the matched file. One of copy, concat, template,
|
||||||
|
# merge_configs, merge_yaml
|
||||||
|
# params: List of params to pass to module enacting the strategy
|
||||||
|
# Strategies:
|
||||||
|
# copy: Copy most specific file to kolla config without templating
|
||||||
|
# template: Template most specific file to kolla config
|
||||||
|
# concat: Concatenate files and copy the result to generated kolla config
|
||||||
|
# merge_configs: Use the merge_configs module to merge an ini file, before
|
||||||
|
# copying to the generated kolla-config.
|
||||||
|
# merge_yaml: Use the merge_yaml module to merge a file, before copying to
|
||||||
|
# the generated kolla-config.
|
||||||
|
#kolla_openstack_custom_config_rules:
|
||||||
|
|
||||||
|
# Whether to enable ini merging rules in
|
||||||
|
# kolla_openstack_custom_config_rules_default. Default is true.
|
||||||
|
#kolla_openstack_custom_config_merge_configs_enabled:
|
||||||
|
|
||||||
|
# Whether to enable yaml merging rules in
|
||||||
|
# kolla_openstack_custom_config_rules_default. Default is true.
|
||||||
|
#kolla_openstack_custom_config_merge_yaml_enabled:
|
||||||
|
|
||||||
|
# Default merge strategy for ini files in
|
||||||
|
# kolla_openstack_custom_config_rules_default. Default is concat.
|
||||||
|
#kolla_openstack_custom_config_ini_merge_strategy_default:
|
||||||
|
|
||||||
|
# Default value for kolla_openstack_custom_config_rules.
|
||||||
|
#kolla_openstack_custom_config_rules_default:
|
||||||
|
|
||||||
|
# List of globs to filter from kolla_openstack_custom_config_rules_default.
|
||||||
|
# Default is an empty list.
|
||||||
|
#kolla_openstack_custom_config_rules_default_remove:
|
||||||
|
|
||||||
|
# Extra items to add to kolla_openstack_custom_config_rules_default
|
||||||
|
# to produce kolla_openstack_custom_config_rules.
|
||||||
|
#kolla_openstack_custom_config_rules_extra:
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Passwords and credentials.
|
# Passwords and credentials.
|
||||||
|
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
import configparser
|
import configparser
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
@ -53,6 +55,21 @@ def test_ini_file(host, path, owner='root', group='root', expected=None):
|
|||||||
assert parser.get(exp_section_name, exp_key) == exp_value
|
assert parser.get(exp_section_name, exp_key) == exp_value
|
||||||
|
|
||||||
|
|
||||||
|
def test_regex_in_file(host, path, owner='root', group='root', regex=None):
|
||||||
|
"""Test that a regex exists in file
|
||||||
|
|
||||||
|
Validate that the file exists, has the correct ownership, format and
|
||||||
|
expected contents.
|
||||||
|
|
||||||
|
:param regex to search for in file
|
||||||
|
"""
|
||||||
|
test_file(host, path, owner, group)
|
||||||
|
|
||||||
|
matches = re.findall(regex, host.file(path).content_string)
|
||||||
|
|
||||||
|
assert len(matches) > 0
|
||||||
|
|
||||||
|
|
||||||
def test_directory(host, path, owner='root', group='root'):
|
def test_directory(host, path, owner='root', group='root'):
|
||||||
"""Test an expected directory.
|
"""Test an expected directory.
|
||||||
|
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Adds new functionality to merge Kolla custom service configuration in a
|
||||||
|
Kayobe environment with Kolla configuration in the base configuration
|
||||||
|
layer.
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
Environment-specific Kolla custom service configuration is now merged with
|
||||||
|
Kolla configuration in the base configuration layer. Config options
|
||||||
|
duplicated in the base layer and the environment will need to be
|
||||||
|
de-deduplicated to avoid the config option showing up multiple times in the
|
||||||
|
generated output (although in general this should not be a problem).
|
||||||
|
|
||||||
|
Set ``kolla_openstack_custom_config_environment_merging_enabled`` to
|
||||||
|
``false`` to revert back to the previous behavior where only the config in
|
||||||
|
the environment was considered.
|
||||||
|
deprecations:
|
||||||
|
- |
|
||||||
|
Deprecates the following variables for removal in the Bobcat release:
|
||||||
|
|
||||||
|
* ``kolla_extra_global``
|
||||||
|
* ``kolla_extra_aodh``
|
||||||
|
* ``kolla_extra_barbican``
|
||||||
|
* ``kolla_extra_blazar``
|
||||||
|
* ``kolla_extra_ceilometer``
|
||||||
|
* ``kolla_extra_cinder``
|
||||||
|
* ``kolla_extra_cloudkitty``
|
||||||
|
* ``kolla_extra_designate``
|
||||||
|
* ``kolla_extra_gnocchi``
|
||||||
|
* ``kolla_extra_grafana``
|
||||||
|
* ``kolla_extra_heat``
|
||||||
|
* ``kolla_extra_ironic``
|
||||||
|
* ``kolla_extra_inspector``
|
||||||
|
* ``kolla_extra_keystone``
|
||||||
|
* ``kolla_extra_magnum``
|
||||||
|
* ``kolla_extra_mariabackup``
|
||||||
|
* ``kolla_extra_mariadb``
|
||||||
|
* ``kolla_extra_manila``
|
||||||
|
* ``kolla_extra_masakari``
|
||||||
|
* ``kolla_extra_murano``
|
||||||
|
* ``kolla_extra_neutron``
|
||||||
|
* ``kolla_extra_neutron_ml2``
|
||||||
|
* ``kolla_extra_nova``
|
||||||
|
* ``kolla_extra_octavia``
|
||||||
|
* ``kolla_extra_placement``
|
||||||
|
* ``kolla_extra_sahara``
|
||||||
|
|
||||||
|
Use of Kolla custom service configuration files in
|
||||||
|
``etc/kayobe/kolla/config`` and
|
||||||
|
``etc/kayobe/environments/<environment>/kolla/config`` should be used
|
||||||
|
instead.
|
@ -9,4 +9,5 @@ selinux # MIT
|
|||||||
oslo.config>=5.2.0 # Apache-2.0
|
oslo.config>=5.2.0 # Apache-2.0
|
||||||
paramiko # LGPL
|
paramiko # LGPL
|
||||||
jsonschema<5 # MIT
|
jsonschema<5 # MIT
|
||||||
|
wcmatch>=8.2,<=9.0 # MIT
|
||||||
hvac>=0.10.1
|
hvac>=0.10.1
|
||||||
|
@ -7,6 +7,12 @@ set -e
|
|||||||
|
|
||||||
molecules="$(find ansible/roles/ -name molecule -type d)"
|
molecules="$(find ansible/roles/ -name molecule -type d)"
|
||||||
|
|
||||||
|
PARENT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# FIXME: doesn't get passed through to linter.
|
||||||
|
export ANSIBLE_ACTION_PLUGINS="$PARENT/../kayobe/plugins/action:~/.ansible/plugins/action:/usr/share/ansible/plugins/action"
|
||||||
|
export ANSIBLE_FORCE_COLOR=True
|
||||||
|
|
||||||
failed=0
|
failed=0
|
||||||
ran=0
|
ran=0
|
||||||
for molecule in $molecules; do
|
for molecule in $molecules; do
|
||||||
|
Loading…
Reference in New Issue
Block a user