
--- 1. Gather facts for localhost in kolla-ansible.yml 2. Don't include unconfigured networks in network_interfaces 3. Added Keystone configuration extra config merge --- 1. Facts are necessary for the kolla-ansible role, which references the ansible_user_uid fact 2. It is possible to skip configuring a network, by setting its name to None This is done in networks.yml as follows: admin_oc_net_name: Currently, these networks may still be included in the 'network_interfaces' list for each host, despite the fact that they are not in use. A classic example is when ironic is not enabled, it is currently still necessary to define provisioning and cleaning networks. This change avoids including any networks that have their name set to None in network_interfaces. 3. Added support for Keystone custom configuration Added tests and documentation to add support for keystone extra configuration Co-Authored-By: Mark Goddard <mark@stackhpc.com Change-Id: Iaa304221b8093ac71f9cdbb23edc84d1517578da
127 lines
5.7 KiB
YAML
127 lines
5.7 KiB
YAML
---
|
|
- 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: ceph.conf.j2, dest: ceph.conf, enabled: "{{ kolla_enable_ceph }}" }
|
|
- { src: cinder.conf.j2, dest: cinder.conf, enabled: "{{ kolla_enable_cinder }}" }
|
|
- { 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: 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: kafka.server.properties.j2, dest: kafka.server.properties, enabled: "{{ kolla_enable_kafka }}" }
|
|
- { 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: ml2_conf.ini.j2, dest: neutron/ml2_conf.ini, enabled: "{{ kolla_enable_neutron }}" }
|
|
- { 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: pxelinux.default.j2, dest: ironic/pxelinux.default, enabled: "{{ kolla_enable_ironic }}" }
|
|
- { src: inspector.ipxe.j2, dest: ironic/inspector.ipxe, enabled: "{{ kolla_enable_ironic_ipxe }}" }
|
|
- { src: sahara.conf.j2, dest: sahara.conf, enabled: "{{ kolla_enable_sahara }}" }
|
|
- { src: zookeeper.cfg.j2, dest: zookeeper.cfg, enabled: "{{ kolla_enable_zookeeper }}" }
|
|
when: item.enabled | bool
|
|
|
|
- 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 }}"
|
|
|
|
# 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: Find extra configuration files
|
|
find:
|
|
path: "{{ item.src }}"
|
|
patterns: "{{ item.patterns }}"
|
|
recurse: true
|
|
with_items: "{{ kolla_openstack_custom_config }}"
|
|
register: find_src_result
|
|
|
|
- name: Find previously generated extra configuration files
|
|
find:
|
|
path: "{{ item.dest }}"
|
|
patterns: "{{ item.patterns }}"
|
|
with_items: "{{ kolla_openstack_custom_config }}"
|
|
register: find_dest_result
|
|
|
|
- name: Ensure extra configuration parent directories are present
|
|
file:
|
|
path: "{{ item.0.item.dest }}/{{ item.1.path | relpath(item.0.item.src) | dirname }}"
|
|
recurse: true
|
|
state: directory
|
|
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 extra configuration files exist
|
|
template:
|
|
src: "{{ item.1.path }}"
|
|
dest: "{{ item.0.item.dest }}/{{ item.1.path | relpath(item.0.item.src) }}"
|
|
mode: 0640
|
|
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 unnecessary extra configuration files are absent
|
|
file:
|
|
path: "{{ item.1.path }}"
|
|
state: absent
|
|
with_subelements:
|
|
- "{{ 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 }}"
|