0

I have this code but unfortunately it's not ejecting the ISO after installing the CentOS and I don't know what to do, can someone please give me a hint on how I can treat this? I can't use Ansible modules, I'm forced to use only the Redfish API.

Here's the code:

- hosts: Linux_OS_machine
  connection: local
  gather_facts: False
  vars:
    datatype: SetBiosAttributes

  tasks:
    - name: Check if virtual media is mounted
      uri:
        url: https://{{ idrac }}/redfish/v1/Managers/iDRAC.Embedded.1/VirtualMedia/CD
        user: "{{ idrac_user }}"
        password: "{{ idrac_pass }}"
        method: GET
        validate_certs: false
        force_basic_auth: yes
        return_content: yes
      register: vm_status

    - name: Umount virtual media if mounted, ignore errors if not
      uri:
        url: "https://{{ idrac }}/redfish/v1/Managers/iDRAC.Embedded.1/VirtualMedia/CD/Actions/VirtualMedia.EjectMedia"
        method: POST
        user: "{{ idrac_user }}"
        password: "{{ idrac_pass }}"
        validate_certs: false
        force_basic_auth: yes
        body_format: json
        status_code: 204
        ignore_errors: yes
      vars:
        image: "{{ iso_version }}-{{ inventory_hostname }}.iso"
      when:
        - vm_status.json.ConnectedVia == "VirtualMedia"
        - vm_status.json.Status != "NotConnected"
        - vm_status.json.Image == image

    - name: Mount virtual media
      uri:
        url: "https://{{ idrac }}/redfish/v1/Managers/iDRAC.Embedded.1/VirtualMedia/CD/Actions/VirtualMedia.InsertMedia"
        method: POST
        user: "{{ idrac_user }}"
        password: "{{ idrac_pass }}"
        validate_certs: False
        status_code: [200, 204]
        body:
          Image: ""
          Oem: {
            "Dell": {
              "BootOnce": "Cd"
            }
          }
        body_format: json
      when:
        - vm_status.json.ConnectedVia == "NotConnected"
        
    - name: Set BIOS boot mode to Legacy
      uri:
        url: "https://{{ idrac }}/redfish/v1/Systems/System.Embedded.1/Bios/Settings"
        method: PATCH
        user: "{{ idrac_user }}"
        password: "{{ idrac_pass }}"
        validate_certs: False
        status_code: [200, 204]
        body:
          Attributes:
            BootMode: Bios
        body_format: json

    - name: Set boot order to boot from HDD
      uri:
        url: https://{{ idrac }}/redfish/v1/Systems/System.Embedded.1
        method: PATCH
        headers:
          Authorization: Basic {{ (idrac_user + ':' + idrac_pass) | b64encode }}
          Content-Type: application/json
        user: "{{ idrac_user }}"
        password: "{{ idrac_pass }}"
        validate_certs: false
        force_basic_auth: yes
        status_code: [200, 204]
        body_format: json
        body:
          Boot:
            BootSourceOverrideTarget: Hdd
            BootSourceOverrideEnabled: Continuous
            BootSourceOverrideMode: Legacy

    - name: Set ISO as primary boot device for installing the ULP
      uri:
        url: https://{{ idrac }}/redfish/v1/Systems/System.Embedded.1
        method: PATCH
        headers:
          Authorization: Basic {{ (idrac_user + ':' + idrac_pass) | b64encode }}
          Content-Type: application/json
        user: "{{ idrac_user }}"
        password: "{{ idrac_pass }}"
        validate_certs: false
        force_basic_auth: yes
        status_code: [200, 204]
        body_format: json
        body:
          Boot:
            BootSourceOverrideTarget: Cd
            BootSourceOverrideEnabled: Once
            BootSourceOverrideMode: Legacy

    - name: Restart system to start ulp auto install
      uri:
        url: "https://{{ idrac }}/redfish/v1/Systems/System.Embedded.1/Actions/ComputerSystem.Reset"
        method: POST
        user: "{{ idrac_user }}"
        password: "{{ idrac_pass }}"
        validate_certs: False
        body: {
          "ResetType": "GracefulRestart"
        }
        body_format: json
        status_code: [200, 204]
        
    - name: Display message after restarting system
      debug:
        msg: "Wait for the ULP installation to be completed."


    - name: Wait for ssh
      wait_for:
        port: 22
        host: '{{ inventory_hostname }}'
        timeout: 8000
        delay: 30
      delegate_to: localhost
bicanul123
  • 101
  • 2

0 Answers0