Ansible playbook导致在任务执行的一半时间内发生异常

Ansible playbook导致在任务执行的一半时间内发生异常,ansible,mikrotik,router-os,Ansible,Mikrotik,Router Os,我对ansible有问题: 我写了一些剧本,做了一些基本的事情,比如从mikrotik得到routeros版本,剧本本身似乎很好。 我的意思是,大约一半的Mikrotik(都在一个网络中,都可以通过ssh访问,都具有相同的防火墙设置等)可以发送我请求的信息。但对于另一半,我得到了这个奇怪的错误(见下文) 我用两个Mikrotik(RB2011IAS)对其进行了深入测试。其中一个在工作,另一个导致如下所示的例外。我比较了配置并排,然后ip的(在同一个网络中)一切都是100%相同。甚至是软件版本。两

我对ansible有问题: 我写了一些剧本,做了一些基本的事情,比如从mikrotik得到routeros版本,剧本本身似乎很好。 我的意思是,大约一半的Mikrotik(都在一个网络中,都可以通过ssh访问,都具有相同的防火墙设置等)可以发送我请求的信息。但对于另一半,我得到了这个奇怪的错误(见下文)

我用两个Mikrotik(RB2011IAS)对其进行了深入测试。其中一个在工作,另一个导致如下所示的例外。我比较了配置并排,然后ip的(在同一个网络中)一切都是100%相同。甚至是软件版本。两者都可以通过ssh访问

An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.module_utils.connection.ConnectionError: timeout value 10 seconds reached while trying to send command: /system resource print
fatal: [XXX:XXX:XXX:X::XX]: FAILED! => {"changed": false, "module_stderr": "Traceback (most recent call last):\n File \"/root/.ansible/tmp/ansible-local-22921xL1Zh9/ansible-tmp-1598512873.3-22929-127716503250274/AnsiballZ_routeros_command.py\", line 102, in <module>\n _ansiballz_main()\n File \"/root/.ansible/tmp/ansible-local-22921xL1Zh9/ansible-tmp-1598512873.3-22929-127716503250274/AnsiballZ_routeros_command.py\", line 94, in _ansiballz_main\n invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n File \"/root/.ansible/tmp/ansible-local-22921xL1Zh9/ansible-tmp-1598512873.3-22929-127716503250274/AnsiballZ_routeros_command.py\", line 40, in invoke_module\n runpy.run_module(mod_name='ansible.modules.network.routeros.routeros_command', init_globals=None, run_name='__main__', alter_sys=True)\n File \"/usr/lib/python2.7/runpy.py\", line 188, in run_module\n fname, loader, pkg_name)\n File \"/usr/lib/python2.7/runpy.py\", line 82, in _run_module_code\n mod_name, mod_fname, mod_loader, pkg_name)\n File \"/usr/lib/python2.7/runpy.py\", line 72, in _run_code\n exec code in run_globals\n File \"/tmp/ansible_routeros_command_payload_VN97ME/ansible_routeros_command_payload.zip/ansible/modules/network/routeros/routeros_command.py\", line 187, in <module>\n File \"/tmp/ansible_routeros_command_payload_VN97ME/ansible_routeros_command_payload.zip/ansible/modules/network/routeros/routeros_command.py\", line 157, in main\n File \"/tmp/ansible_routeros_command_payload_VN97ME/ansible_routeros_command_payload.zip/ansible/module_utils/network/routeros/routeros.py\", line 125, in run_commands\n File \"/tmp/ansible_routeros_command_payload_VN97ME/ansible_routeros_command_payload.zip/ansible/module_utils/network/routeros/routeros.py\", line 55, in get_connection\n File \"/tmp/ansible_routeros_command_payload_VN97ME/ansible_routeros_command_payload.zip/ansible/module_utils/network/routeros/routeros.py\", line 69, in get_capabilities\n File \"/tmp/ansible_routeros_command_payload_VN97ME/ansible_routeros_command_payload.zip/ansible/module_utils/connection.py\", line 185, in __rpc__\nansible.module_utils.connection.ConnectionError: timeout value 10 seconds reached while trying to send command: /system resource print\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
在设备上手动执行命令可以正常工作

我尝试了另一个剧本,mikrotiks有旧的和全新的固件,将超时设置为120秒,到目前为止没有任何效果。 我也知道用户名中的一些符号会导致问题,但这里的情况并非如此

如果你需要更多的信息,我很乐意提供。
如果有人知道是什么导致了这个问题,我会非常高兴。

检查您在路由器中的身份是否有一个特殊的字符,如/,routeros\u命令调用资源打印,并被身份弄乱。好吧,至少它对我有用…

我把它修好了。导致我的问题的原因是,mikrotik CPE的主机名有时超过31个字符,这是由于ansible的控制路径长度限制,将导致此错误。重命名它们使其生效。

根据错误单独显示您的敏感信息,并显示完整的剧本,您与路由器的连接超时:
ansible.module_utils.connection.ConnectionError:尝试发送命令时达到超时值10秒:/system resource print
@larsks与失败设备的连接稳定。在发生错误且连接未中断时,我已连接到测试所用的设备。连接也会被实时监控,因此超时是可见的。我还可以在设备本身上看到ansible成功登录。@Patrick整个playbook都在我的问题中,或者您要求的是什么?您是否按照错误消息的建议使用
-vvv
运行playbook,以查看是否可以获得任何其他有价值的信息?
    ---
 - name: Check mikrotik os version
   hosts: mikrotik
   gather_facts: no

   tasks:
     - name: CHeck OS
       routeros_command:
         commands: /system package print
       register: version_output

     - name: Disply version
       debug:
         var: version_output