bifrost/playbooks/roles/ironic-inspect-node/tasks/main.yml
Julia Kreger 0e05496f6e Split inspection conditionals depending on auth mode
There is a bug in the inspection module, which needs
to be corrected, although that is going to take potentially
a substantial amount of time given ansible's release cycle.

In the mean time, we're just going to have to work around it
until we're able to get the fix landed in ansible.

Change-Id: I70fc4b54c6cd815bdb755819ad28215714c71260
2017-08-30 16:14:24 +00:00

89 lines
3.2 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: "Collect facts"
setup:
- name: "If in noauth mode, unset authentication parameters."
set_fact:
auth_type: None
auth: {}
when: noauth_mode is defined and noauth_mode | bool == true
- name: "Execute os_client_config to collect facts"
os_client_config:
no_log: yes
when: noauth_mode is defined and noauth_mode | bool == false
# NOTE(TheJulia): The first record returned by os_client_config
# is utilized as the default. A user can still define the parameters
# if so desired.
- name: "Set os_client_config's auth parameters if not already set."
set_fact:
auth: "{{ openstack.clouds[0].auth }}"
auth_type: "{{ openstack.clouds[0].auth_type }}"
when: auth is undefined
no_log: yes
- name: "Setup DHCP for nodes."
template:
src: dhcp-host.j2
dest: "/etc/dnsmasq.d/bifrost.dhcp-hosts.d/{{ inventory_hostname }}"
owner: root
group: root
mode: 0644
when: inventory_dhcp | bool == true
become: yes
- name: "Setup DNS address for nodes."
template:
src: dns-address.j2
dest: "/etc/dnsmasq.d/host_record_{{ inventory_hostname }}"
owner: root
group: root
mode: 0644
when: inventory_dns | bool == true
become: yes
- name: "Sending dnsmasq HUP"
# Note(TheJulia): We need to actually to send a hup signal directly as
# Ansible's reloaded state does not pass through to the init script.
command: killall -HUP dnsmasq
become: yes
when: (inventory_dhcp | bool == true) or (inventory_dns | bool == true)
- name: "Execute node introspection - noauth_mode"
os_ironic_inspect:
cloud: "{{ cloud_name | default(omit) }}"
auth_type: "{{ auth_type | default(omit) }}"
auth: "{{ auth | default(omit) }}"
ironic_url: "{{ ironic_url | default(omit) }}"
uuid: "{{ uuid | default('') }}"
name: "{{ name | default('') }}"
timeout: "{{ inspection_wait_timeout }}"
when: noauth_mode is not defined or noauth_mode | bool == True
# NOTE(TheJulia): Some behavior appears to have changed in ansible at
# some point where arguments are passed that are part of the spec for,
# which raises a bug in the inspection module where auth_type must be
# defined, as it is otherwise always sent as a null value.
- name: "Execute node introspection"
os_ironic_inspect:
cloud: "{{ cloud_name | default(omit) }}"
auth_type: "{{ auth_type | default('password') }}"
auth: "{{ auth | default(omit) }}"
ironic_url: "{{ ironic_url | default(omit) }}"
uuid: "{{ uuid | default('') }}"
name: "{{ name | default('') }}"
timeout: "{{ inspection_wait_timeout }}"
when: noauth_mode is defined and noauth_mode | bool == False