dell / dellemc-openmanage-ansible-modules

Dell OpenManage Ansible Modules
GNU General Public License v3.0
335 stars 163 forks source link

idrac_firmware fails when using NFS #301

Closed randy-randerson closed 2 years ago

randy-randerson commented 3 years ago
Question

When trying to update iDRAC firmware using the idrac_firmware ansible module I get the below error:

"msg": "'str' object does not support item assignment"
Details

I'm connecting to a PowerEdge FC640 iDRAC 9 system with a perpetual enterprise license. I just created a updates repository using the Dell Repository Manager and when I try to connect through the iDRAC web interface to perform a manual update it is able to connect to my repo and see available updates, but when I try using the ansible module I get the above error.

Here is the playbook I'm using:

- name: Update iDRAC firmware
  hosts: all
  connection: local
  gather_facts: no
  collections:
    - dellemc.openmanage
  tasks:
    - name: Update iDRAC firmware
      dellemc.openmanage.idrac_firmware:
        idrac_ip: "10.100.1.81"
        idrac_user: "{{ user }}"
        idrac_password: "{{ password }}"
        share_name: "10.100.1.4:/srv/nfs4/nfsshare/dell_updates/"
        reboot: False
        job_wait: False
        apply_update: False
        catalog_file_name: "FC640_updates_1.03_Catalog.xml"
        share_mnt: "/srv/nfs4/nfsshare/dell_updates/"

Here is the traceback when running with -vvv:

The full traceback is:
WARNING: The below traceback may *not* be related to the actual failure.
  File "/var/folders/6h/zmkxssvd35j9n37wqbv86cx80000gp/T/ansible_dellemc.openmanage.idrac_firmware_payload_FiFiP9/ansible_dellemc.openmanage.idrac_firmware_payload.zip/ansible_collections/dellemc/openmanage/plugins/modules/idrac_firmware.py", line 634, in main
  File "/var/folders/6h/zmkxssvd35j9n37wqbv86cx80000gp/T/ansible_dellemc.openmanage.idrac_firmware_payload_FiFiP9/ansible_dellemc.openmanage.idrac_firmware_payload.zip/ansible_collections/dellemc/openmanage/plugins/modules/idrac_firmware.py", line 526, in update_firmware_redfish
[WARNING]: Platform darwin on host localhost is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change the
meaning of that path. See https://docs.ansible.com/ansible/2.11/reference_appendices/interpreter_discovery.html for more information.
fatal: [localhost]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "apply_update": false,
            "catalog_file_name": "FC640_updates_1.03_Catalog.xml",
            "idrac_ip": "10.100.1.81",
            "idrac_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "idrac_port": 443,
            "idrac_user": "root",
            "ignore_cert_warning": true,
            "job_wait": false,
            "reboot": false,
            "share_mnt": "/data/isos/dell_updates/",
            "share_name": "10.100.1.4:/data/isos/dell_updates/",
            "share_password": null,
            "share_user": null
        }
    },
    "msg": "'str' object does not support item assignment"
}

I'm running on ansible 2.11.2 and the latest versions of dellemc.openmanage and omsdk.

Any idea what I might be missing?

anupamaloke commented 3 years ago

@randy-randerson, could you please try with the latest release (4.0.0) and report whether you are still running into this error?

randy-randerson commented 3 years ago

@randy-randerson, could you please try with the latest release (4.0.0) and report whether you are still running into this error?

@anupamaloke Unfortunately still getting the same error on 4.0.0:

TASK [bv_install : Update iDRAC firmware] *****************************************************************************************************************************************
task path: /Users/athomp646/repos/Manufacturing/roles/bv_install/tasks/bv_install.yml:3
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: athomp646
<localhost> EXEC /bin/sh -c 'echo ~athomp646 && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /Users/athomp646/.ansible/tmp `"&& mkdir "` echo /Users/athomp646/.ansible/tmp/ansible-tmp-1629905504.455632-99218-235637304919894 `" && echo ansible-tmp-1629905504.455632-99218-235637304919894="` echo /Users/athomp646/.ansible/tmp/ansible-tmp-1629905504.455632-99218-235637304919894 `" ) && sleep 0'
<localhost> Attempting python interpreter discovery
<localhost> EXEC /bin/sh -c 'echo PLATFORM; uname; echo FOUND; command -v '"'"'/usr/bin/python'"'"'; command -v '"'"'python3.9'"'"'; command -v '"'"'python3.8'"'"'; command -v '"'"'python3.7'"'"'; command -v '"'"'python3.6'"'"'; command -v '"'"'python3.5'"'"'; command -v '"'"'python2.7'"'"'; command -v '"'"'python2.6'"'"'; command -v '"'"'/usr/libexec/platform-python'"'"'; command -v '"'"'/usr/bin/python3'"'"'; command -v '"'"'python'"'"'; echo ENDFOUND && sleep 0'
<localhost> Python interpreter discovery fallback (unsupported platform for extended discovery: darwin)
Using module file /Users/athomp646/.ansible/collections/ansible_collections/dellemc/openmanage/plugins/modules/idrac_firmware.py
<localhost> PUT /Users/athomp646/.ansible/tmp/ansible-local-99197bgr52oha/tmpa38pumze TO /Users/athomp646/.ansible/tmp/ansible-tmp-1629905504.455632-99218-235637304919894/AnsiballZ_idrac_firmware.py
<localhost> EXEC /bin/sh -c 'chmod u+x /Users/athomp646/.ansible/tmp/ansible-tmp-1629905504.455632-99218-235637304919894/ /Users/athomp646/.ansible/tmp/ansible-tmp-1629905504.455632-99218-235637304919894/AnsiballZ_idrac_firmware.py && sleep 0'
<localhost> EXEC /bin/sh -c '/usr/bin/python /Users/athomp646/.ansible/tmp/ansible-tmp-1629905504.455632-99218-235637304919894/AnsiballZ_idrac_firmware.py && sleep 0'
<localhost> EXEC /bin/sh -c 'rm -f -r /Users/athomp646/.ansible/tmp/ansible-tmp-1629905504.455632-99218-235637304919894/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
WARNING: The below traceback may *not* be related to the actual failure.
  File "/var/folders/6h/zmkxssvd35j9n37wqbv86cx80000gp/T/ansible_dellemc.openmanage.idrac_firmware_payload_vKlbDj/ansible_dellemc.openmanage.idrac_firmware_payload.zip/ansible_collections/dellemc/openmanage/plugins/modules/idrac_firmware.py", line 634, in main
  File "/var/folders/6h/zmkxssvd35j9n37wqbv86cx80000gp/T/ansible_dellemc.openmanage.idrac_firmware_payload_vKlbDj/ansible_dellemc.openmanage.idrac_firmware_payload.zip/ansible_collections/dellemc/openmanage/plugins/modules/idrac_firmware.py", line 526, in update_firmware_redfish
[WARNING]: Platform darwin on host localhost is using the discovered Python interpreter at /usr/bin/python, but future installation of another Python interpreter could change the
meaning of that path. See https://docs.ansible.com/ansible/2.11/reference_appendices/interpreter_discovery.html for more information.
fatal: [localhost]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "invocation": {
        "module_args": {
            "apply_update": false,
            "catalog_file_name": "FC640_updates_1.03_Catalog.xml",
            "idrac_ip": "10.100.1.81",
            "idrac_password": "VALUE_SPECIFIED_IN_NO_LOG_PARAMETER",
            "idrac_port": 443,
            "idrac_user": "root",
            "ignore_cert_warning": true,
            "job_wait": false,
            "reboot": false,
            "share_mnt": null,
            "share_name": "10.100.1.4:/srv/nfs4/nfsshare/dell_updates",
            "share_password": null,
            "share_user": null
        }
    },
    "msg": "'str' object does not support item assignment"
}

PLAY RECAP ************************************************************************************************************************************************************************
localhost                  : ok=2    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0   

[10:02:40 ~/repos/Manufacturing] 
$ pip freeze
ansible==4.0.0
ansible-core==2.11.4
certifi==2021.5.30
cffi==1.14.6
charset-normalizer==2.0.4
cryptography==3.4.8
future==0.18.2
idna==3.2
ipaddress==1.0.23
Jinja2==3.0.1
MarkupSafe==2.0.1
omsdk==1.2.478
anupamaloke commented 3 years ago

@randy-randerson, I am sorry that I was not unabiguous enough when I asked you to check with version 4.0.0. I wanted you to check with the 4.0.0 version of the dellemc.openmanage collection. This just got released yesterday. You will have to use the -f flag to force install the latest version:

$ ansible-galaxy collection install dellemc.openmanage -f
Starting galaxy collection install process
Process install dependency map
Starting collection install process
Installing 'dellemc.openmanage:4.0.0' to '/home/anupam/.ansible/collections/ansible_collections/dellemc/openmanage'
Downloading https://galaxy.ansible.com/download/dellemc-openmanage-4.0.0.tar.gz to /home/anupam/.ansible/tmp/ansible-local-20910jq7e9man/tmpeqw4q4by
dellemc.openmanage (4.0.0) was installed successfully

$ ansible-galaxy collection list dellemc.openmanage

# /home/anupam/workspace/virtualenv/idrac_certificate/lib64/python3.6/site-packages/ansible_collections
Collection         Version
------------------ -------
dellemc.openmanage 3.0.0

# /home/anupam/.ansible/collections/ansible_collections               <======== default path for collection
Collection         Version
------------------ -------
dellemc.openmanage 4.0.0

# /home/anupam/workspace/virtualenv/idrac_certificate/lib/python3.6/site-packages/ansible_collections
Collection         Version
------------------ -------
dellemc.openmanage 3.0.0

If still run into the same issue, then could you please raise a SR with Dell Tech Support as well so that we are able to collect more information to troubleshoot this issue?

randy-randerson commented 3 years ago

@anupamaloke Oh sorry for the confusion, but yes unfortunately I am still seeing the same issue on version 4.0.0 of the collection.

Could you please point me to the right link to open a SR with Dell Tech Support?

anupamaloke commented 3 years ago

@randy-randerson, this link would help you to create a SR online.

anupamaloke commented 2 years ago

@randy-randerson, I am closing this issue due to inactivity. Please raise a new issue if you run into the same error.