dell / dellemc-openmanage-ansible-modules

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

Update Fails with FTP #235

Closed geeshans closed 3 years ago

geeshans commented 3 years ago

I'm trying to upgrade idrac firmware using a repo in a FTP share. Both idrac and ftp share are in the same network with no firewall restrictions.

  - name: Update firmware from repository on FTP Share
    idrac_firmware:
        idrac_ip: "{{ inventory_hostname }}"
        idrac_user: "{{ idrac_user }}"
        idrac_password: "{{ idrac_pwd }}"
        share_name: "192.168.1.2:/export/firmware/repo/"
        share_user: "{{ ftp_user }}"
        share_password: "{{ ftp_pw }}"
        catalog_file_name: "catalog.xml"
        job_wait: True
        apply_update: True

This fails and with the error:

Start TimeNot Applicable Expiration TimeNot Applicable MessageRED016: Mount of remote share failed.

The example playbook is not clear on how to use a FTP share since it uses an HTTP location.

Version Info: ansible 2.9.14 omsdk 1.2.456 dellemc.openmanage:3.0.0

geeshans commented 3 years ago
"msg": "HTTP Error 400: Bad Request",
    "update_status": {
        "error": {
            "@Message.ExtendedInfo": [
                {
                    "Message": "The GetRepoBasedUpdateList method did not complete successfully.",
                    "MessageArgs": [],
                    "MessageArgs@odata.count": 0,
                    "MessageId": "IDRAC.2.1.SUP028",
                    "RelatedProperties": [],
                    "RelatedProperties@odata.count": 0,
                    "Resolution": "Execute InstallFromRepo method, and then retry the operation.",
                    "Severity": "Warning"
                }
            ],
            "code": "Base.1.5.GeneralError",
            "message": "A general error has occurred. See ExtendedInfo for more information"
        }
    }
}
anupamaloke commented 3 years ago

@geeshans, I am guessing the issue could be due to how you are specifying the FTP share in the share_name parameter. The module will interpret this as a NFS share instead of a FTP share and consequently iDRAC will fail to communicate with the share using NFS protocol.

You need to specify the FTP share in the share_name argument as listed below:

  - name: Update firmware from repository on FTP Share
    idrac_firmware:
        idrac_ip: "{{ inventory_hostname }}"
        idrac_user: "{{ idrac_user }}"
        idrac_password: "{{ idrac_pwd }}"
        share_name: "ftp://192.168.1.2/export/firmware/repo/"
        share_user: "{{ ftp_user }}"
        share_password: "{{ ftp_pw }}"
        catalog_file_name: "catalog.xml"
        job_wait: True
        apply_update: True  

Could you please try with the above changes and let us know whether that works or not?

geeshans commented 3 years ago

Hi @anupamaloke ,

Yes this fixed it. Also I had : in the share name between server and the path. Removing that and adding the protocol solved the issue.

Thank you!