-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
Signed-off-by: Boris Glimcher <[email protected]>
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
- name: Update DPU Firmware | ||
hosts: all | ||
gather_facts: false | ||
roles: | ||
- bmc_fw_update |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,82 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright (c) 2022-2024 Dell Inc, or its subsidiaries. | ||
|
||
--- | ||
# tasks file for bmc_fw_update | ||
|
||
- name: Get Firmware Inventory | ||
Check failure on line 7 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.15)var-naming[no-role-prefix]
Check failure on line 7 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.9, stable-2.15)var-naming[no-role-prefix]
Check failure on line 7 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.16)var-naming[no-role-prefix]
Check failure on line 7 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.10, stable-2.14)var-naming[no-role-prefix]
Check failure on line 7 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.10, stable-2.15)var-naming[no-role-prefix]
Check failure on line 7 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.9, stable-2.14)var-naming[no-role-prefix]
Check failure on line 7 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.14)var-naming[no-role-prefix]
|
||
ansible.builtin.include_role: | ||
name: get_bmc_facts | ||
register: fw_inventory_before | ||
|
||
- name: Print BMC Version | ||
ansible.builtin.debug: | ||
msg: "{{ fw_inventory_before.redfish_facts.firmware.entries[0].Version }}" | ||
|
||
- name: Download firmware image {{ firmware.bmc }} | ||
ansible.builtin.get_url: | ||
url: "{{ firmware.url }}/{{ firmware.bmc }}" | ||
dest: /tmp/{{ firmware.bmc }} | ||
mode: '0440' | ||
delegate_to: localhost | ||
|
||
- name: Update BMC firmware of DPU | ||
community.general.redfish_command: | ||
category: Update | ||
command: MultipartHTTPPushUpdate | ||
baseuri: "{{ inventory_hostname }}" | ||
username: "{{ dpu_bmc_username }}" | ||
password: "{{ dpu_bmc_password }}" | ||
timeout: 600 | ||
update_image_file: "/tmp/{{ firmware.bmc }}" | ||
register: result_update_task | ||
delegate_to: localhost | ||
|
||
- name: Extract task id from update task | ||
ansible.builtin.set_fact: | ||
bmc_firmware_update_taskid: "{{ result_update_task.return_values.update_status.handle }}" | ||
|
||
- name: Print TASK id for tracking | ||
ansible.builtin.debug: | ||
msg: "{{ result_update_task.return_values.update_status.handle }}" | ||
|
||
- name: Pause for 10 seconds for BMC to start task | ||
ansible.builtin.pause: | ||
seconds: 10 | ||
|
||
- name: Get the status of an update operation in a loop | ||
community.general.redfish_info: | ||
category: Update | ||
command: GetUpdateStatus | ||
baseuri: "{{ inventory_hostname }}" | ||
username: "{{ dpu_bmc_username }}" | ||
password: "{{ dpu_bmc_password }}" | ||
update_handle: "{{ result_update_task.return_values.update_status.handle }}" | ||
register: update_progress | ||
until: update_progress.redfish_facts.update_status.status != 'Running' | ||
retries: 60 | ||
delay: 30 | ||
delegate_to: localhost | ||
|
||
- name: Validate task was completed | ||
ansible.builtin.assert: { that: "update_progress.redfish_facts.update_status.status == 'Completed'" } | ||
|
||
- name: Reboot BMC to apply new firmware of DPU | ||
ansible.builtin.include_role: | ||
name: bmc_reboot | ||
|
||
- name: Pause for 60 seconds for BMC to Reboot | ||
ansible.builtin.pause: | ||
seconds: 60 | ||
|
||
- name: Get Firmware Inventory | ||
Check failure on line 72 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.15)var-naming[no-role-prefix]
Check failure on line 72 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.9, stable-2.15)var-naming[no-role-prefix]
Check failure on line 72 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.16)var-naming[no-role-prefix]
Check failure on line 72 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.10, stable-2.14)var-naming[no-role-prefix]
Check failure on line 72 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.10, stable-2.15)var-naming[no-role-prefix]
Check failure on line 72 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.9, stable-2.14)var-naming[no-role-prefix]
Check failure on line 72 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.14)var-naming[no-role-prefix]
|
||
ansible.builtin.include_role: | ||
name: get_bmc_facts | ||
register: fw_inventory_after | ||
|
||
- name: Print BMC Version | ||
ansible.builtin.debug: | ||
msg: "{{ fw_inventory_after.redfish_facts.firmware.entries[0].Version }}" | ||
|
||
- name: Validate fw image changed from before | ||
ansible.builtin.assert: { that: "fw_inventory_before.redfish_facts.firmware.entries[0].Version != fw_inventory_after.redfish_facts.firmware.entries[0].Version" } | ||
Check failure on line 82 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.15)yaml[line-length]
Check failure on line 82 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.9, stable-2.15)yaml[line-length]
Check failure on line 82 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.16)yaml[line-length]
Check failure on line 82 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.10, stable-2.14)yaml[line-length]
Check failure on line 82 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.10, stable-2.15)yaml[line-length]
Check failure on line 82 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.9, stable-2.14)yaml[line-length]
Check failure on line 82 in roles/bmc_fw_update/tasks/main.yml GitHub Actions / Ansible lint (3.11, stable-2.14)yaml[line-length]
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,7 @@ | ||
--- | ||
# vars file for bmc_fw_update | ||
|
||
firmware: | ||
Check failure on line 4 in roles/bmc_fw_update/vars/main.yml GitHub Actions / Ansible lint (3.11, stable-2.15)var-naming[no-role-prefix]
Check failure on line 4 in roles/bmc_fw_update/vars/main.yml GitHub Actions / Ansible lint (3.9, stable-2.15)var-naming[no-role-prefix]
Check failure on line 4 in roles/bmc_fw_update/vars/main.yml GitHub Actions / Ansible lint (3.11, stable-2.16)var-naming[no-role-prefix]
Check failure on line 4 in roles/bmc_fw_update/vars/main.yml GitHub Actions / Ansible lint (3.10, stable-2.14)var-naming[no-role-prefix]
Check failure on line 4 in roles/bmc_fw_update/vars/main.yml GitHub Actions / Ansible lint (3.10, stable-2.15)var-naming[no-role-prefix]
Check failure on line 4 in roles/bmc_fw_update/vars/main.yml GitHub Actions / Ansible lint (3.9, stable-2.14)var-naming[no-role-prefix]
Check failure on line 4 in roles/bmc_fw_update/vars/main.yml GitHub Actions / Ansible lint (3.11, stable-2.14)var-naming[no-role-prefix]
|
||
url: https://content.mellanox.com/BlueField/BMC/23.10-1-oct-2023 | ||
bmc: bf3-bmc-23.10-5_opn.fwpkg | ||
cec: cec1736-ecfw-00.02.0152.0000-n02-rel-prod.fwpkg |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,14 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright (c) 2022-2024 Dell Inc, or its subsidiaries. | ||
|
||
--- | ||
# tasks file for bmc_reboot | ||
|
||
- name: Reboot BMC to apply new firmware of DPU | ||
community.general.redfish_command: | ||
category: Manager | ||
command: GracefulRestart | ||
baseuri: "{{ inventory_hostname }}" | ||
username: "{{ dpu_bmc_username }}" | ||
password: "{{ dpu_bmc_password }}" | ||
delegate_to: localhost |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,19 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright (c) 2022-2024 Dell Inc, or its subsidiaries. | ||
|
||
--- | ||
# tasks file for get_bmc_facts | ||
|
||
- name: Get Firmware Inventory | ||
community.general.redfish_info: | ||
category: Update | ||
command: GetFirmwareInventory | ||
baseuri: "{{ inventory_hostname }}" | ||
username: "{{ dpu_bmc_username }}" | ||
password: "{{ dpu_bmc_password }}" | ||
register: result | ||
delegate_to: localhost | ||
|
||
- name: Extract BMC firmware version from inventory | ||
ansible.builtin.set_fact: | ||
bmc_firmware_version: "{{ result.redfish_facts.firmware.entries[0].Version }}" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,16 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# Copyright (c) 2022-2024 Dell Inc, or its subsidiaries. | ||
|
||
--- | ||
# tasks file for update_bmc_password | ||
|
||
- name: Update user password | ||
community.general.redfish_command: | ||
category: Accounts | ||
command: UpdateUserPassword | ||
baseuri: "{{ inventory_hostname }}" | ||
username: "{{ dpu_bmc_username }}" | ||
password: "{{ dpu_bmc_password }}" | ||
account_username: "{{ loginname }}" | ||
account_password: "{{ new_pass }}" | ||
delegate_to: localhost |