9c18eeac6d
Add a workaround for the libvirt network start race condition bug. In some cases the libvirt default network starts in an inactive state with the bridge interface down. Trying to start the network via libvirt fails because the network interface already exists. This condition is checked for and ignored but causes the Bifrost deployment test to fail later when templating ironic.conf as the configured network interface has no IP address. This change checks for the condition where the libvirt default network is inactive and attempts to delete the associated bridge interface before starting the libvirt network. This has been run through the CI job and appears to resolve the issue. Change-Id: Icb2baf0975ca3feb6041b2f2da9702ad6cc9fa06 Closes-Bug: #1660953 Related-Bug: #1650025
45 lines
1.7 KiB
YAML
45 lines
1.7 KiB
YAML
# Copyright (c) 2015 Hewlett-Packard Development Company, L.P.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
# implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
---
|
|
- name: "Fail if the network interface does not exist"
|
|
fail:
|
|
msg: >
|
|
The configured network interface {{ network_interface }} does
|
|
not exist
|
|
when: "{{ 'ansible_' ~ ans_network_interface not in hostvars[inventory_hostname] }}"
|
|
- name: "Fail if the network interface has no IP address assigned"
|
|
fail:
|
|
msg: >
|
|
The configured network interface {{ network_interface }} does
|
|
not have an IP address assigned
|
|
when: "{{ not hostvars[inventory_hostname]['ansible_' ~ ans_network_interface].get('ipv4', {}).get('address') }}"
|
|
- name: "Update driver list if PXE drivers are enabled"
|
|
set_fact:
|
|
enabled_drivers: "{{ enabled_drivers }},{{ pxe_drivers }}"
|
|
when: enable_pxe_drivers | bool == true
|
|
- name: "Create ironic config"
|
|
template:
|
|
src="ironic.conf.j2"
|
|
dest=/etc/ironic/ironic.conf
|
|
owner=ironic
|
|
group=ironic
|
|
mode=0640
|
|
- name: "Set sudoers for PXE driver support if enabled"
|
|
lineinfile:
|
|
dest: /etc/sudoers
|
|
regexp: '^ironic(.*)/etc/ironic/rootwrap.conf(.*)'
|
|
line: "ironic ALL = (root) NOPASSWD: {{ ironic_rootwrap_dir }}/ironic-rootwrap /etc/ironic/rootwrap.conf *"
|
|
when: enable_pxe_drivers | bool == true
|