kayobe/ansible/roles/kolla-openstack/tasks/config.yml
Mark Goddard 428ef10fa4 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
2023-05-30 16:47:14 +00:00

133 lines
4.8 KiB
YAML

---
- name: Ensure ironic inspector kernel and ramdisk images are present
vars:
image_download_url: "{{ item.url }}"
image_download_checksum_url: "{{ item.checksum_url }}"
image_download_checksum_algorithm: "{{ item.checksum_algorithm }}"
image_download_path: "{{ item.path }}"
image_download_dest: "{{ item.dest }}"
include_role:
name: image-download
with_items:
- url: "{{ kolla_inspector_ipa_kernel_upstream_url }}"
checksum_url: "{{ kolla_inspector_ipa_kernel_checksum_url }}"
checksum_algorithm: "{{ kolla_inspector_ipa_kernel_checksum_algorithm }}"
path: "{{ kolla_inspector_ipa_kernel_path }}"
dest: "{{ kolla_node_custom_config_path }}/ironic/ironic-agent.kernel"
- url: "{{ kolla_inspector_ipa_ramdisk_upstream_url }}"
checksum_url: "{{ kolla_inspector_ipa_ramdisk_checksum_url }}"
checksum_algorithm: "{{ kolla_inspector_ipa_ramdisk_checksum_algorithm }}"
path: "{{ kolla_inspector_ipa_ramdisk_path }}"
dest: "{{ kolla_node_custom_config_path }}/ironic/ironic-agent.initramfs"
when: kolla_enable_ironic | bool
loop_control:
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
# 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
# any unexpected files from the destination, to support removal of files.
- name: Collect details about custom config
kolla_custom_config_info:
destination: "{{ kolla_node_custom_config_path }}"
ignore_globs: "{{ _kolla_openstack_custom_config_cleanup_ignore_globs }}"
include_globs: "{{ kolla_openstack_custom_config_include_globs }}"
rules: "{{ kolla_openstack_custom_config_rules }}"
search_paths: "{{ kolla_openstack_custom_config_paths | product(['/kolla/config']) | map('join') | list }}"
register: kolla_custom_config_info
- name: Print kolla_custom_config_info when using -v
debug:
msg: "{{ kolla_custom_config_info }}"
verbosity: 1
- name: Ensure extra configuration parent directories are present
file:
path: "{{ item }}"
recurse: true
state: directory
with_items: "{{ kolla_custom_config_info.create_dir }}"
- name: "Ensure extra configuration files exist (strategy: template)"
vars:
params:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: 0640
template: "{{ params | combine(item.params) }}"
with_items: "{{ kolla_custom_config_info.template }}"
- name: "Ensure extra configuration files exist (strategy: copy)"
vars:
params:
src: "{{ item.src }}"
dest: "{{ item.dest }}"
mode: 0640
copy: "{{ params | combine(item.params) }}"
# NOTE: .copy is ambiguous with copy method
with_items: "{{ kolla_custom_config_info['copy'] }}"
- name: "Ensure extra configuration files exist (strategy: merge_configs)"
vars:
params:
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
file:
path: "{{ item }}"
state: absent
with_items: "{{ kolla_custom_config_info.delete }}"