kayobe/ansible/compute-node-discovery.yml
Mark Goddard ef1456d94d Add a playbook to trigger discovery of compute nodes
This uses the map of iDRAC hostnames to IP addresses to generate an Ansible
inventory for the compute nodes. The nodes' power states and boot modes are
then set via IPMI.
2017-03-27 16:45:49 +01:00

52 lines
1.8 KiB
YAML

---
- name: Ensure compute nodes are present in the Ansible inventory
hosts: config-mgmt
gather_facts: no
tasks:
- name: Add hosts for the compute nodes
add_host:
name: "{{ item.key }}"
groups: compute
with_dict: "{{ idrac_network_ips }}"
# Don't add hosts that already exist.
when:
- "{{ item.key not in groups['all'] }}"
- "{{ item.key | replace('-idrac', '') not in groups['all'] }}"
run_once: True
- name: Ensure compute nodes are PXE booted
hosts: compute
gather_facts: no
tasks:
- name: Set a fact containing the compute node IPMI address
set_fact:
ipmi_username: "{{ inspector_ipmi_username }}"
ipmi_password: "{{ inspector_ipmi_password }}"
ipmi_address: "{{ idrac_network_ips[inventory_hostname] }}"
- name: Ensure compute nodes are powered off
command: ipmitool -U {{ ipmi_username }} -P {{ ipmi_password }} -H {{ ipmi_address }} -I lanplus chassis power off
delegate_to: "{{ item }}"
with_items:
- "{{ hostvars[groups['controllers'][0]].ansible_host }}"
- name: Pause to prevent overwhelming BMCs
pause:
seconds: 5
- name: Ensure compute nodes are set to boot via PXE
command: ipmitool -U {{ ipmi_username }} -P {{ ipmi_password }} -H {{ ipmi_address }} -I lanplus chassis bootdev pxe
delegate_to: "{{ item }}"
with_items:
- "{{ hostvars[groups['controllers'][0]].ansible_host }}"
- name: Pause to prevent overwhelming BMCs
pause:
seconds: 5
- name: Ensure compute nodes are powered on
command: ipmitool -U {{ ipmi_username }} -P {{ ipmi_password }} -H {{ ipmi_address }} -I lanplus chassis power on
delegate_to: "{{ item }}"
with_items:
- "{{ hostvars[groups['controllers'][0]].ansible_host }}"