--- - hosts: Controller vars: metadata: name: Neutron Sanity Check description: > Run `neutron-sanity-check` on the controller nodes to find out potential issues with Neutron's configuration. The tool expects all the configuration files that are passed to the Neutron services. groups: - post-deployment # The list of Neutron configuration files and directories that # will be passed to the Neutron services. The order is important # here: the values in later files take precedence. configs: - /etc/neutron/neutron.conf - /usr/share/neutron/neutron-dist.conf - /etc/neutron/metadata_agent.ini - /etc/neutron/dhcp_agent.ini - /etc/neutron/fwaas_driver.ini - /etc/neutron/l3_agent.ini - /usr/share/neutron/neutron-lbaas-dist.conf - /etc/neutron/lbaas_agent.ini tasks: - name: Run neutron-sanity-check command: "docker exec -u root neutron_ovs_agent /bin/bash -c 'neutron-sanity-check --config-file {{ item }}'" with_items: "{{ configs }}" become: true register: nsc_return ignore_errors: true changed_when: False - name: Detect errors set_fact: has_errors: "{{ nsc_return.results | sum(attribute='stderr_lines', start=[]) | select('search', '(ERROR)') | list | length | int > 0 }}" - name: Detect warnings set_fact: has_warnings: "{{ nsc_return.results | sum(attribute='stderr_lines', start=[]) | select('search', '(WARNING)') | list | length | int > 0 }}" - name: Create output set_fact: output_msg: "{{ nsc_return.results | sum(attribute='stderr_lines', start=[]) | select('search', '(ERROR|WARNING)') | list }}" - name: Output warning warn: msg="{{ output_msg | join('\n') }}" when: has_warnings and not has_errors - name: Fail fail: msg="{{ output_msg | join('\n') }}" when: has_errors