bifrost/playbooks/roles/bifrost-ironic-install/tasks/ironic_config.yml
Mark Goddard 9c18eeac6d Workaround for network start race condition
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
2017-02-27 15:03:01 +00:00

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