Search code examples
pythonansiblednf

Troubles with ansible dnf install local rpm


I want to install local rpm package. In one case it work well

    - name: Atom text editor
      dnf:  name="/mnt/temp/Inbox/Soft/Atom editor/atom-1.18.0-x86_64.rpm"
      when: ansible_os_family == "RedHat" and ansible_pkg_mgr == "dnf"
      tags: [packages, work, txt, atom]

For other rpm it raise error

    - name: wine-launcher-creator
      dnf:  name="/mnt/warehous/Warehouse/Linux/rpm/wine-launcher-creator-1.0.8-2.noarch.rpm"
      when: ansible_os_family == "RedHat" and ansible_pkg_mgr == "dnf"
      tags: [packages, env, work, wine]

Error

TASK [wine-launcher-creator] ***************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: dnf.exceptions.Error: <exception str() failed>
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "module_stderr": "Traceback (most recent call last):\n  File \"/tmp/ansible_TaYSEN/ansible_module_dnf.py\", line 355, in <module>\n    main()\n  File \"/tmp/ansible_TaYSEN/ansible_module_dnf.py\", line 349, in main\n    ensure(module, base, params['state'], params['name'])\n  File \"/tmp/ansible_TaYSEN/ansible_module_dnf.py\", line 304, in ensure\n    base.do_transaction()\n  File \"/usr/lib/python2.7/site-packages/dnf/base.py\", line 591, in do_transaction\n    self._trans_error_summary(errstring))\ndnf.exceptions.Error: <exception str() failed>\n", "module_stdout": "", "msg": "MODULE FAILURE", "rc": 0}

I can't understand what's a problem.

Permissions owner and SElinux attributes is same.

I tried to move troublesome rpm to same filesystem as working (/mnt/temp/Inbox/Test/) with no success.


Solution

  • Thanks @kfreezy for good idea.

    1. By default LANG=ru_RU.UTF8. Ansible 2.3.0 unable to show errors in Cyrilic language. Error message just ommited. Change to LANG=C show complete error message in English.

    2. Best to try complete install process. Runtime error can happen at any stage of process.

    UPD:

    Ansible 2.4 allow set locale for modules and by default set

    module_lang    = C
    

    So (1) is outdated.