我有一个在本地系统上更新包的剧本。由于这是初始系统配置的一部分,因此它使用本地传输运行。(Ansible运行为:ansible-playbook -c local -i localhost site.yml
(
行动手册中的相关任务是:
- name: "Package Management | Update system"
dnf:
name: "*"
state: latest
when:
- config_update_pkgs
- var_update_pkgs_update_system
此任务运行时间较长,通常约为15分钟以上。当Ansible开始下一个任务时,我得到了这个错误:
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: root
<localhost> EXEC /bin/sh -c 'echo ~root && sleep 0'
<localhost> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo /root/.ansible/tmp `"&& mkdir "` echo /root/.ansible/tmp/ansible-tmp-1615995245.1999388-218318-225834592190062 `" && echo ansible-tmp-1615995245.1999388-218318-225834592190062="` echo /root/.ansible/tmp/ansible-tmp-1615995245.1999388-218318-225834592190062 `" ) && sleep 0'
Using module file /usr/lib/python3.6/site-packages/ansible/modules/system/user.py
<localhost> PUT /root/.ansible/tmp/ansible-local-15829904wg505h/tmpqbqnk3tj TO /root/.ansible/tmp/ansible-tmp-1615995245.1999388-218318-225834592190062/AnsiballZ_user.py
<localhost> EXEC /bin/sh -c 'chmod u+x /root/.ansible/tmp/ansible-tmp-1615995245.1999388-218318-225834592190062/ /root/.ansible/tmp/ansible-tmp-1615995245.1999388-218318-225834592190062/AnsiballZ_user.py && sleep 0'
<localhost> EXEC /bin/sh -c 'TMPDIR=/var/lib/ansible /usr/libexec/platform-python /root/.ansible/tmp/ansible-tmp-1615995245.1999388-218318-225834592190062/AnsiballZ_user.py && sleep 0'
<localhost> EXEC /bin/sh -c 'rm -f -r /root/.ansible/tmp/ansible-tmp-1615995245.1999388-218318-225834592190062/ > /dev/null 2>&1 && sleep 0'
The full traceback is:
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/ansible/executor/task_executor.py", line 113, in run
item_results = self._run_loop(items)
File "/usr/lib/python3.6/site-packages/ansible/executor/task_executor.py", line 367, in _run_loop
res = self._execute(variables=task_vars)
File "/usr/lib/python3.6/site-packages/ansible/executor/task_executor.py", line 665, in _execute
result = self._handler.run(task_vars=variables)
File "/usr/lib/python3.6/site-packages/ansible/plugins/action/normal.py", line 51, in run
if self._task.action in C._ACTION_SETUP:
AttributeError: module 'ansible.constants' has no attribute '_ACTION_SETUP'
fatal: [localhost]: FAILED! => {
"msg": "Unexpected failure during module execution.",
"stdout": ""
}
我一直在玩ansible.cfg
中的persistent_connection
设置,运气还不太好。
谢谢。
弄清楚发生了什么:Ansible本身正在用其他包进行更新。事实证明Ansible不喜欢这样。
将剧本更改为:
- name: "Package Management | Update system"
dnf:
name: "*"
state: latest
exclude: ansible
when:
- config_update_pkgs
- var_update_pkgs_update_system
阻止了Ansible更新自己,看起来它解决了我的问题。
感谢@mdaniel的建议,让我仔细查看了实际更新的内容,因为我第一次查看时就错过了。