我尝试更新包时出现 Ansible Zypper 模块错误

问题描述

大家好!

我编写了一个非常简单的 Ansible 角色来将所有软件包更新到 Suse Leap 15.2:

- name: All packages updated
  package:
    name: "*"
    state: latest

但似乎Zypper模块有问题:

TASK [system_update : All packages updated] ***************************************************************************************************************************************************************************************************
task path: /home/merlin/ansible-kt-linux/roles/system_update/tasks/main.yml:10
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: merlin
<localhost> EXEC /bin/sh -c 'echo ~merlin && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811 `" && echo ansible-tmp-1617094154.778992-48329012899811="` echo /home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811 `" ) && sleep 0'
Using module file /usr/lib/python3.6/site-packages/ansible/modules/packaging/os/zypper.py
<localhost> PUT /home/merlin/.ansible/tmp/ansible-local-5239dx5tukgw/tmpvf5upp37 TO /home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py
<localhost> EXEC /bin/sh -c 'chmod u+x /home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/ /home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py && sleep 0'
<localhost> EXEC /bin/sh -c 'sudo -H -S -n  -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-qfmrjmpwqhyapufsdqunaohtmlxjucdk ; /usr/bin/python /home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py'"'"' && sleep 0'
<localhost> EXEC /bin/sh -c 'rm -f -r /home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
Traceback (most recent call last):
  File "/home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py",line 102,in <module>
    _ansiballz_main()
  File "/home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py",line 94,in _ansiballz_main
    invoke_module(zipped_mod,temp_path,ANSIBALLZ_ParaMS)
  File "/home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py",line 40,in invoke_module
    runpy.run_module(mod_name='ansible.modules.packaging.os.zypper',init_globals=None,run_name='__main__',alter_sys=True)
  File "/usr/lib64/python2.7/runpy.py",line 188,in run_module
    fname,loader,pkg_name)
  File "/usr/lib64/python2.7/runpy.py",line 82,in _run_module_code
    mod_name,mod_fname,mod_loader,line 72,in _run_code
    exec code in run_globals
  File "/tmp/ansible_zypper_payload_jYlnfB/ansible_zypper_payload.zip/ansible/modules/packaging/os/zypper.py",line 195,in <module>
ImportError: No module named xml
fatal: [localhost]: Failed! => {
    "changed": false,"module_stderr": "Traceback (most recent call last):\n  File \"/home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py\",in <module>\n    _ansiballz_main()\n  File \"/home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py\",in _ansiballz_main\n    invoke_module(zipped_mod,ANSIBALLZ_ParaMS)\n  File \"/home/merlin/.ansible/tmp/ansible-tmp-1617094154.778992-48329012899811/AnsiballZ_zypper.py\",in invoke_module\n    runpy.run_module(mod_name='ansible.modules.packaging.os.zypper',alter_sys=True)\n  File \"/usr/lib64/python2.7/runpy.py\",in run_module\n    fname,pkg_name)\n  File \"/usr/lib64/python2.7/runpy.py\",in _run_module_code\n    mod_name,in _run_code\n    exec code in run_globals\n  File \"/tmp/ansible_zypper_payload_jYlnfB/ansible_zypper_payload.zip/ansible/modules/packaging/os/zypper.py\",in <module>\nImportError: No module named xml\n","module_stdout": "","msg": "MODULE FAILURE\nSee stdout/stderr for the exact error","rc": 1
}

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

不幸的是,我无法从中看出问题究竟是什么。有没有人知道这个问题?

解决方法

用shell解决了:

- name: "Install python-xml on Suse"
  shell: zypper -n install python-xml