首页 > 解决方案 > ansible-playbook 计时器仅在某些节点上 10 秒后过期,但在其他节点上工作正常

问题描述

我能够 ping 所有服务器,但是当我在所有节点上运行 playbook 时,它只能在某些节点上运行,而在其他节点上我得到

TimeoutError:计时器在 10 秒后过期

它工作正常。它发生在过去 1 周。

wrt playbook 或 ansible cfg 文件没有任何改变。

    The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_Kh_sLm/ansible_modlib.zip/ansible/module_utils/basic.py", line 2853, in run_command
    cmd = subprocess.Popen(args, **kwargs)
  File "/usr/lib64/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib64/python2.7/subprocess.py", line 1308, in _execute_child
    data = _eintr_retry_call(os.read, errpipe_read, 1048576)
  File "/usr/lib64/python2.7/subprocess.py", line 478, in _eintr_retry_call
    return func(*args)
  File "/tmp/ansible_Kh_sLm/ansible_modlib.zip/ansible/module_utils/facts/timeout.py", line 37, in _handle_timeout
    raise TimeoutError(msg)
TimeoutError: Timer expired after 10 seconds

fatal: [hostname]: FAILED! => {
    "changed": false, 
    "cmd": "/bin/findmnt --list --noheadings --notruncate", 
    "invocation": {
        "module_args": {
            "fact_path": "/etc/ansible/facts.d", 
            "filter": "*", 
            "gather_subset": [
                "all"
            ], 
            "gather_timeout": 10
        }
    }, 
    "msg": "Timer expired after 10 seconds", 
    "rc": 257
}

标签: ansibleansible-2.x

解决方案


这种解决方法帮助了我。在 /etc/ansible/ansible.cfg 我设置了gather_subset = !all 基本上只收集最少的事实。我认为在收集事实时有些事情搞砸了。因此,根据您的要求设置值以仅收集您需要的那些事实。


推荐阅读