--- - name: Ensure Kolla OpenStack components are configured hosts: config-mgmt vars: switch_type_to_device_type: dellos9: netmiko_dell_force10 pre_tasks: - block: - name: Check whether Kolla extra configuration files exist stat: path: "{{ kayobe_config_path }}/kolla/config/{{ item.file }}" register: stat_result with_items: - { name: glance, file: glance.conf } - { name: inspector, file: ironic-inspector.conf } - { name: ironic, file: ironic.conf } - { name: neutron, file: neutron.conf } - { name: neutron_ml2, file: neutron/ml2_conf.ini } - 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 fail: msg: > Switch configuration for {{ item }} is invalid. The following variables must be set for the host: switch_type, ansible_host, ansible_user, ansible_ssh_pass. Further, switch_type must be one of {{ switch_type_to_device_type.keys() | join(', ') }}. with_items: "{{ kolla_neutron_ml2_generic_switch_hosts }}" when: > {{ item not in hostvars or 'switch_type' not in hostvars[item] or hostvars[item].switch_type not in switch_type_to_device_type or 'ansible_host' not in hostvars[item] or 'ansible_user' not in hostvars[item] or 'ansible_ssh_pass' not in hostvars[item] }} tags: - config-validation - name: Update a fact containing switches for use by Neutron ML2 genericswitch driver set_fact: kolla_neutron_ml2_generic_switches: > {{ kolla_neutron_ml2_generic_switches + [{'name': item, 'device_type': switch_type_to_device_type[hostvars[item].switch_type], 'ip': hostvars[item].ansible_host, 'username': hostvars[item].ansible_user, 'password': hostvars[item].ansible_ssh_pass}] }} with_items: "{{ kolla_neutron_ml2_generic_switch_hosts }}" tags: - config roles: - role: kolla-openstack # Ironic inspector configuration. kolla_inspector_manage_firewall: "{{ inspector_manage_firewall }}" kolla_inspector_processing_hooks: "{{ inspector_processing_hooks }}" kolla_inspector_add_ports: "{{ inspector_add_ports }}" kolla_inspector_keep_ports: "{{ inspector_keep_ports }}" kolla_inspector_enable_discovery: "{{ inspector_enable_discovery }}" kolla_inspector_discovery_enroll_node_driver: "{{ inspector_discovery_enroll_node_driver }}" kolla_inspector_extra_kernel_options: "{{ inspector_extra_kernel_options }}" kolla_inspector_ipa_kernel_upstream_url: "{{ inspector_ipa_kernel_upstream_url }}" kolla_inspector_ipa_ramdisk_upstream_url: "{{ inspector_ipa_ramdisk_upstream_url }}" # Ironic inspector's dnsmasq configuration. kolla_inspector_dhcp_pool_start: "{{ inspection_net_name | net_inspection_allocation_pool_start }}" kolla_inspector_dhcp_pool_end: "{{ inspection_net_name | net_inspection_allocation_pool_end }}" # Extra free-form user-provided configuration. kolla_extra_glance: "{{ kolla_extra_config.glance | default }}" kolla_extra_inspector: "{{ kolla_extra_config.inspector | default }}" kolla_extra_ironic: "{{ kolla_extra_config.ironic | default }}" kolla_extra_neutron: "{{ kolla_extra_config.neutron | default }}" kolla_extra_neutron_ml2: "{{ kolla_extra_config.neutron_ml2 | default }}"