Meh... If we create an empty file, we then hit a third issue: TASK [NetworkConfig stdout] **************************************************** Tuesday 02 July 2019 08:12:24 +0000 (0:00:01.092) 0:02:33.170 ********** ok: [overcloud-controller-0] => { "NetworkConfig_result.stderr_lines": [ "+ '[' -n '{\"network_config\": [{\"members\": [{\"name\": \"interface_name\", \"primary\": true, \"type\": \"interface\"}], \"name\": \"bridge_name\", \"type\": \"ovs_bridge\", \"use_dhcp\": true}]}' ']'", "+ '[' -z '' ']'", "+ trap configure_safe_defaults EXIT", "++ date +%Y-%m-%dT%H:%M:%S", "+ DATETIME=2019-07-02T08:12:18", "+ '[' -f /etc/os-net-config/config.json ']'", "+ mkdir -p /etc/os-net-config", "+ echo '{\"network_config\": [{\"members\": [{\"name\": \"interface_name\", \"primary\": true, \"type\": \"interface\"}], \"name\": \"bridge_name\", \"type\": \"ovs_bridge\", \"use_dhcp\": true}]}'", "++ type -t network_config_hook", "+ '[' '' = function ']'", "+ sed -i s/bridge_name/br-ex/ /etc/os-net-config/config.json", "+ sed -i s/interface_name/nic1/ /etc/os-net-config/config.json", "+ set +e", "+ os-net-config -c /etc/os-net-config/config.json -v --detailed-exit-codes", "[2019/07/02 08:12:18 AM] [INFO] Using config file at: /etc/os-net-config/config.json", "[2019/07/02 08:12:18 AM] [INFO] Ifcfg net config provider created.", "[2019/07/02 08:12:18 AM] [INFO] Not using any mapping file.", "[2019/07/02 08:12:19 AM] [INFO] Finding active nics", "[2019/07/02 08:12:19 AM] [INFO] eth1 is an embedded active nic", "[2019/07/02 08:12:19 AM] [INFO] eth0 is an embedded active nic", "[2019/07/02 08:12:19 AM] [INFO] lo is not an active nic", "[2019/07/02 08:12:19 AM] [INFO] No DPDK mapping available in path (/var/lib/os-net-config/dpdk_mapping.yaml)", "[2019/07/02 08:12:19 AM] [INFO] Active nics are ['eth0', 'eth1']", "[2019/07/02 08:12:19 AM] [INFO] nic2 mapped to: eth1", "[2019/07/02 08:12:19 AM] [INFO] nic1 mapped to: eth0", "[2019/07/02 08:12:19 AM] [INFO] adding bridge: br-ex", "[2019/07/02 08:12:19 AM] [INFO] adding interface: eth0", "[2019/07/02 08:12:19 AM] [INFO] applying network configs...", "[2019/07/02 08:12:19 AM] [INFO] running ifdown on interface: eth0", "[2019/07/02 08:12:19 AM] [INFO] running ifdown on bridge: br-ex", "[2019/07/02 08:12:19 AM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-br-ex", "[2019/07/02 08:12:19 AM] [INFO] Writing config /etc/sysconfig/network-scripts/ifcfg-eth0", "[2019/07/02 08:12:19 AM] [INFO] running ifup on bridge: br-ex", "[2019/07/02 08:12:19 AM] [INFO] running ifup on interface: eth0", "+ RETVAL=2", "+ set -e", "+ [[ 2 == 2 ]]", "+ '[' -f /etc/udev/rules.d/99-dhcp-all-interfaces.rules ']'", "+ rm /etc/udev/rules.d/99-dhcp-all-interfaces.rules", "+ '[' -f /usr/libexec/os-apply-config/templates/etc/os-net-config/config.json ']'", "+ '[' -f /usr/libexec/os-apply-config/templates/etc/os-net-config/element_config.json ']'", "+ configure_safe_defaults", "+ [[ 0 == 0 ]]", "+ return 0" ], "failed_when_result": false } fatal: [overcloud-novacompute-0]: FAILED! => { "NetworkConfig_result.stderr_lines": "VARIABLE IS NOT DEFINED!: 'dict object' has no attribute 'stderr_lines'", "failed_when_result": true } Guess we must dig a bit further...