kolla-ansible/ansible/roles/nova/tasks/config.yml
Doug Szumski 9af42fcebc Support copying static Vendordata file into Nova API container
Nova provides a mechanism to set static vendordata via a file [1].
This patch provides support in Kolla Ansible for using this
feature.

Arguably this could be part of a generic mechansim for copying
arbitrary config, but:

- It's not clear if there is anything else that would take
  advantage of this
- One size might not fit all

[1] https://docs.openstack.org/nova/latest/configuration/config.html#api.vendordata_jsonfile_path

Change-Id: Id420376d96d0c40415c369ae8dd36e845a781820
2021-11-25 17:24:05 +00:00

125 lines
3.5 KiB
YAML

---
- name: Ensuring config directories exist
become: true
file:
path: "{{ node_config_directory }}/{{ item.key }}"
state: "directory"
owner: "{{ config_owner_user }}"
group: "{{ config_owner_group }}"
mode: "0770"
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ nova_services }}"
- name: Check if policies shall be overwritten
stat:
path: "{{ item }}"
delegate_to: localhost
run_once: True
register: nova_policy
with_first_found:
- files: "{{ supported_policy_format_list }}"
paths:
- "{{ node_custom_config }}/nova/"
skip: true
- name: Set nova policy file
set_fact:
nova_policy_file: "{{ nova_policy.results.0.stat.path | basename }}"
nova_policy_file_path: "{{ nova_policy.results.0.stat.path }}"
when:
- nova_policy.results
- name: Check for vendordata file
stat:
path: "{{ node_custom_config }}/nova/vendordata.json"
delegate_to: localhost
run_once: True
register: vendordata_file
- name: Set vendordata file path
set_fact:
vendordata_file_path: "{{ vendordata_file.stat.path }}"
when:
- vendordata_file.stat.exists
- include_tasks: copy-certs.yml
when:
- kolla_copy_ca_into_containers | bool or nova_enable_tls_backend | bool
- name: Copying over config.json files for services
become: true
template:
src: "{{ item.key }}.json.j2"
dest: "{{ node_config_directory }}/{{ item.key }}/config.json"
mode: "0660"
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ nova_services }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over nova.conf
become: true
vars:
service_name: "{{ item.key }}"
merge_configs:
sources:
- "{{ role_path }}/templates/nova.conf.j2"
- "{{ node_custom_config }}/global.conf"
- "{{ node_custom_config }}/nova.conf"
- "{{ node_custom_config }}/nova/{{ item.key }}.conf"
- "{{ node_custom_config }}/nova/{{ inventory_hostname }}/nova.conf"
dest: "{{ node_config_directory }}/{{ item.key }}/nova.conf"
mode: "0660"
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
with_dict: "{{ nova_services }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over existing policy file
become: true
template:
src: "{{ nova_policy_file_path }}"
dest: "{{ node_config_directory }}/{{ item.key }}/{{ nova_policy_file }}"
mode: "0660"
when:
- inventory_hostname in groups[item.value.group]
- item.value.enabled | bool
- nova_policy_file is defined
- item.key in nova_services_require_policy_json
with_dict: "{{ nova_services }}"
notify:
- "Restart {{ item.key }} container"
- name: Copying over nova-api-wsgi.conf
template:
src: "nova-api-wsgi.conf.j2"
dest: "{{ node_config_directory }}/nova-api/nova-api-wsgi.conf"
mode: "0660"
become: true
when:
- inventory_hostname in groups["nova-api"]
- nova_services["nova-api"].enabled | bool
notify:
- "Restart nova-api container"
- name: Copying over vendordata file
vars:
service: "{{ nova_services['nova-api'] }}"
copy:
src: "{{ vendordata_file_path }}"
dest: "{{ node_config_directory }}/nova-api/vendordata.json"
mode: "0660"
become: True
when:
- vendordata_file_path is defined
- inventory_hostname in groups[service['group']]
- service.enabled | bool
notify:
- "Restart nova-api container"