diff options
author | Peter Mikus <pmikus@cisco.com> | 2019-02-23 16:27:07 +0000 |
---|---|---|
committer | Peter Mikus <pmikus@cisco.com> | 2019-05-22 09:30:11 +0000 |
commit | 04ea580e111ddf5be6101be1fbfe9fde56f1a214 (patch) | |
tree | 09247ed50f1da5e09b79dcf41a05b38afeaa4ee2 /resources/tools/testbed-setup/ansible/roles/common/handlers | |
parent | c6cd03e08d9429168b0e183b8dcbce991112f279 (diff) |
Ansible: Add CIMC/IPMI/COBBLER
- added tasks and handlers for CIMC, IPMI, COBBLER
- allows provisioning of servers via COBBLER
Change-Id: I64080069260dabb8a6e3b648aeff12f109d3f7c2
Signed-off-by: Peter Mikus <pmikus@cisco.com>
Diffstat (limited to 'resources/tools/testbed-setup/ansible/roles/common/handlers')
4 files changed, 140 insertions, 14 deletions
diff --git a/resources/tools/testbed-setup/ansible/roles/common/handlers/cimc.yaml b/resources/tools/testbed-setup/ansible/roles/common/handlers/cimc.yaml new file mode 100644 index 0000000000..e31d712d4d --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/common/handlers/cimc.yaml @@ -0,0 +1,69 @@ +--- +# file: roles/common/handlers/cimc.yaml + +- name: Boot from network + imc_rest: + hostname: '{{ inventory_cimc_hostname }}' + username: '{{ inventory_cimc_username }}' + password: '{{ inventory_cimc_password }}' + validate_certs: no + content: | + <!-- Configure PXE boot --> + <configConfMo><inConfig> + <lsbootLan dn="sys/rack-unit-1/boot-policy/lan-read-only" access="read-only" order="1" prot="pxe" type="lan"/> + </inConfig></configConfMo> + delegate_to: localhost + tags: boot-network + +- name: Boot from storage + imc_rest: + hostname: '{{ inventory_cimc_hostname }}' + username: '{{ inventory_cimc_username }}' + password: '{{ inventory_cimc_password }}' + validate_certs: no + content: | + <configConfMo><inConfig> + <lsbootStorage dn="sys/rack-unit-1/boot-policy/storage-read-write" access="read-write" order="1" type="storage"/> + </inConfig></configConfMo> + delegate_to: localhost + tags: boot-storage + +- name: Power up server + imc_rest: + hostname: '{{ inventory_cimc_hostname }}' + username: '{{ inventory_cimc_username }}' + password: '{{ inventory_cimc_password }}' + validate_certs: no + content: | + <configConfMo><inConfig> + <computeRackUnit dn="sys/rack-unit-1" adminPower="up"/> + </inConfig></configConfMo> + delegate_to: localhost + tags: power-up + +- name: Power down server + imc_rest: + hostname: '{{ inventory_cimc_hostname }}' + username: '{{ inventory_cimc_username }}' + password: '{{ inventory_cimc_password }}' + validate_certs: no + content: | + <configConfMo><inConfig> + <computeRackUnit dn="sys/rack-unit-1" adminPower="down"/> + </inConfig></configConfMo> + delegate_to: localhost + tags: power-down + +- name: Power cycle server + imc_rest: + hostname: '{{ inventory_cimc_hostname }}' + username: '{{ inventory_cimc_username }}' + password: '{{ inventory_cimc_password }}' + validate_certs: no + content: | + <!-- Power cycle server --> + <configConfMo><inConfig> + <computeRackUnit dn="sys/rack-unit-1" adminPower="cycle-immediate"/> + </inConfig></configConfMo> + delegate_to: localhost + tags: power-cycle diff --git a/resources/tools/testbed-setup/ansible/roles/common/handlers/ipmi.yaml b/resources/tools/testbed-setup/ansible/roles/common/handlers/ipmi.yaml new file mode 100644 index 0000000000..6252cc04fd --- /dev/null +++ b/resources/tools/testbed-setup/ansible/roles/common/handlers/ipmi.yaml @@ -0,0 +1,47 @@ +--- +# file: roles/common/handlers/ipmi.yaml + +- name: Boot from network + ipmi_boot: + name: '{{ inventory_ipmi_hostname }}' + user: '{{ inventory_ipmi_username }}' + password: '{{ inventory_ipmi_password }}' + bootdev: network + delegate_to: localhost + tags: boot-network + +- name: Boot from storage + ipmi_boot: + name: '{{ inventory_ipmi_hostname }}' + user: '{{ inventory_ipmi_username }}' + password: '{{ inventory_ipmi_password }}' + bootdev: hd + delegate_to: localhost + tags: boot-storage + +- name: Power up server + ipmi_power: + name: '{{ inventory_ipmi_hostname }}' + user: '{{ inventory_ipmi_username }}' + password: '{{ inventory_ipmi_password }}' + state: on + delegate_to: localhost + tags: power-up + +- name: Power down server + ipmi_power: + name: '{{ inventory_ipmi_hostname }}' + user: '{{ inventory_ipmi_username }}' + password: '{{ inventory_ipmi_password }}' + state: off + delegate_to: localhost + tags: power-down + +- name: Power cycle server + ipmi_power: + name: '{{ inventory_ipmi_hostname }}' + user: '{{ inventory_ipmi_username }}' + password: '{{ inventory_ipmi_password }}' + state: boot + delegate_to: localhost + tags: power-cycle diff --git a/resources/tools/testbed-setup/ansible/roles/common/handlers/main.yaml b/resources/tools/testbed-setup/ansible/roles/common/handlers/main.yaml index bdcf6832f4..f994afdc60 100644 --- a/resources/tools/testbed-setup/ansible/roles/common/handlers/main.yaml +++ b/resources/tools/testbed-setup/ansible/roles/common/handlers/main.yaml @@ -1,6 +1,30 @@ --- # file: roles/common/handlers/main.yaml +- name: IPMI specific + import_tasks: ipmi.yaml + when: inventory_ipmi_hostname is defined + tags: ipmi-handlers + +- name: CIMC specific + import_tasks: cimc.yaml + when: inventory_cimc_hostname is defined + tags: cimc-handlers + - name: Update GRUB command: update-grub tags: update-grub + +- name: Reboot server + reboot: + reboot_timeout: 3600 + tags: reboot-server + +- name: Wait for server to restart + wait_for: + host: '{{ inventory_hostname }}' + search_regex: OpenSSH + port: 22 + delay: 60 + timeout: 3600 + tags: reboot-server diff --git a/resources/tools/testbed-setup/ansible/roles/common/handlers/reboot.yaml b/resources/tools/testbed-setup/ansible/roles/common/handlers/reboot.yaml deleted file mode 100644 index 01e1eb1b6b..0000000000 --- a/resources/tools/testbed-setup/ansible/roles/common/handlers/reboot.yaml +++ /dev/null @@ -1,14 +0,0 @@ ---- -# file roles/common/handlers/reboot.yaml - -- name: Reboot host - command: shutdown -r now "Ansible updates triggered" - async: 0 - poll: 0 - ignore_errors: true - tags: reboot-host - -- name: Waiting for server to come back - local_action: wait_for host={{ inventory_hostname }} - state=started - tags: reboot-host |