diff options
Diffstat (limited to 'ansible_collections/cisco/intersight/playbooks/server_firmware.yml')
-rw-r--r-- | ansible_collections/cisco/intersight/playbooks/server_firmware.yml | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/ansible_collections/cisco/intersight/playbooks/server_firmware.yml b/ansible_collections/cisco/intersight/playbooks/server_firmware.yml new file mode 100644 index 00000000..6888fa78 --- /dev/null +++ b/ansible_collections/cisco/intersight/playbooks/server_firmware.yml @@ -0,0 +1,115 @@ +--- +# +# The hosts group used is provided by the group variable or defaulted to 'Intersight_Servers'. +# You can specify a specific host (or host group) on the command line: +# ansible-playbook ... -e group=<your host group> +# e.g., ansible-playbook server_profiles.yml -e group=TME_Demo +# +- hosts: "{{ group | default('Intersight_Servers') }}" + connection: local + gather_facts: false + vars: + # Create an anchor for api_info that can be used throughout the file + api_info: &api_info + api_private_key: "{{ api_private_key }}" + api_key_id: "{{ api_key_id }}" + api_uri: "{{ api_uri | default(omit) }}" + validate_certs: "{{ validate_certs | default(omit) }}" + state: "{{ state | default(omit) }}" + fw_version: 4.1(2b) + file_share: 172.28.224.77/mnt/SHARE/ISOS/HUU + tasks: + # Edit FW to be used as needed for server type below + - set_fact: + file_name: "ucs-c220m4-huu-{{ fw_version | replace('(','.') | replace(')','') }}.iso" + supported_models: + - UCSC-C220-M4L + - UCSC-C220-M4S + when: model is search("UCSC-C220-M4.*") + - set_fact: + file_name: "ucs-c240m4-huu-{{ fw_version | replace('(','.') | replace(')','') }}.iso" + supported_models: + - UCSC-C240-M4L + - UCSC-C240-M4S + - UCSC-C240-M4SX + - UCSC-C240-M4SNEBS + - UCSC-C240-M4S2 + when: model is search("UCSC-C240-M4.*") + - set_fact: + file_name: "ucs-c240m5-huu-{{ fw_version | replace('(','.') | replace(')','') }}.iso" + supported_models: + - UCSC-C240-M5S + - UCSC-C240-M5L + - UCSC-C240-M5SX + - UCSC-C240-M5SN + - UCSC-C240-M5SD + - HX240C-M5SX + - HXAF240C-M5SX + - HX240C-M5L + - HX240C-M5SD + - HXAF240C-M5SD + when: model is search("UCSC-C240-M5.*") + - set_fact: + file_name: "ucs-c220m5-huu-{{ fw_version | replace('(','.') | replace(')','') }}.iso" + supported_models: + - UCSC-C220-M5SX + - UCSC-C220-M5L + - UCSC-C220-M5SN + - HX220C-M5SX + - HXAF220C-M5SX + when: model is search("UCSC-C220-M5.*") + - set_fact: + file_location: "{{ file_share }}/{{ file_name }}" + # Set the distributable type based on the management mode and server type + - set_fact: + dist_type: STANDALONE + when: mode == 'Intersight' or mode == 'IntersightStandalone' + # Get a user defined FW version + - name: Get Moid of user defined FW version + intersight_rest_api: + <<: *api_info + resource_path: /firmware/Distributables + query_params: + $filter: "FileLocation eq '{{ file_location }}'" + update_method: post + api_body: { + "Catalog": { + "Moid": "5cd993686567612d30aaa762" + }, + "ImportAction": "None", + "Name": "{{ file_name }}", + "Origin": "User", + "Source": { + "ObjectType": "softwarerepository.NfsServer", + "FileLocation": "{{ file_location }}" + }, + "SupportedModels": "{{ supported_models }}", + "Version": "{{ fw_version }}" + } + delegate_to: localhost + register: fw_resp + - name: Update server firmware + cisco.intersight.intersight_rest_api: + <<: *api_info + resource_path: /firmware/Upgrades + query_params: + $filter: "Server.Moid eq '{{ server_moid }}'" + update_method: post + # nw_upgrade_full supported in UI, nw_upgrade_mount_only has partial API support + api_body: { + "UpgradeType": "network_upgrade", + "Distributable": { + "Moid": "{{ fw_resp.api_response.Moid }}" + }, + "DirectDownload": {}, + "NetworkShare": { + "Upgradeoption": "nw_upgrade_mount_only", + "MapType":"nfs" + }, + "Server": { + "ObjectType": "compute.{{ object_type }}", + "Moid": "{{ server_moid }}" + } + } + delegate_to: localhost + when: server_moid is defined |