--- - import_playbook: dell-compute-node-inventory.yml - name: Ensure baremetal compute nodes are PXE booted hosts: baremetal-compute gather_facts: no vars: controller_host: "{{ groups['controllers'][0] }}" tasks: - name: Ensure ipmitool is installed package: name: ipmitool state: present cache_valid_time: "{{ apt_cache_valid_time if ansible_os_family == 'Debian' else omit }}" update_cache: "{{ True if ansible_os_family == 'Debian' else omit }}" become: True run_once: True delegate_to: "{{ controller_host }}" vars: # NOTE: Without this, the controller's ansible_host variable will not # be respected when using delegate_to. ansible_host: "{{ hostvars[controller_host].ansible_host | default(controller_host) }}" - name: Ensure baremetal compute nodes are powered off command: ipmitool -U {{ ipmi_username }} -P {{ ipmi_password }} -H {{ ipmi_address }} -I lanplus chassis power off delegate_to: "{{ controller_host }}" register: result failed_when: - result is failed # Some BMCs complain if the node is already powered off. - "'Command not supported in present state' not in result.stderr" vars: # NOTE: Without this, the controller's ansible_host variable will not # be respected when using delegate_to. ansible_host: "{{ hostvars[controller_host].ansible_host | default(controller_host) }}" - name: Pause to prevent overwhelming BMCs pause: seconds: 5 - name: Ensure baremetal 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: "{{ controller_host }}" vars: # NOTE: Without this, the controller's ansible_host variable will not # be respected when using delegate_to. ansible_host: "{{ hostvars[controller_host].ansible_host | default(controller_host) }}" - name: Pause to prevent overwhelming BMCs pause: seconds: 5 - name: Ensure baremetal compute nodes are powered on command: ipmitool -U {{ ipmi_username }} -P {{ ipmi_password }} -H {{ ipmi_address }} -I lanplus chassis power on delegate_to: "{{ controller_host }}" vars: # NOTE: Without this, the controller's ansible_host variable will not # be respected when using delegate_to. ansible_host: "{{ hostvars[controller_host].ansible_host | default(controller_host) }}"