我对 ansible 有疑问:我写了一些剧本,做一些基本的事情,比如从 mikrotik 获取 routeros 版本,剧本本身似乎工作正常。我的意思是大约一半的 mikrotiks(都在一个网络中,都通过 ssh 访问,都具有相同的防火墙设置等)发送我请求的信息就好了。但是另一半我得到了这个奇怪的错误(见下文)。
我用两个 mikrotiks (RB2011UiAS) 对它进行了深入测试。其中一个工作,另一个导致下面看到的异常。我并排比较了配置,除了 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}
(删除了 ipv6)
这是剧本:
---
- 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
在设备上手动执行命令有效。
我用另一个剧本尝试了它,使用带有较旧和全新固件的 mikrotiks,将超时设置为 120 秒,到目前为止没有任何效果。我也知道用户名中的某些符号导致的问题,但这里不是这种情况。
如果您需要更多信息,我很乐意提供这些信息。如果有人知道可能导致此问题的原因,我会更高兴。