我正在尝试将我用 Python 编写的自动化脚本传输到 ansible (公司请求),但我以前从未使用过 ansible。我已经尝试过“wait_for:”,但我也没有让它发挥作用。在脚本中,我可以设置 dev.timeout=None 或我需要的任何内容。我发现很难弄清楚在 ansible 中哪里可以做到这一点。我尝试在“ansible.cfg”文件中设置超时。但这是行不通的。我可以执行简单的命令,例如:
cli="显示版本",或者
cli=“显示系统固件”。
以下是我的剧本:
- hosts: local
roles:
- Juniper.junos
connection: local
gather_facts: no
tasks:
- junos_cli:
host={{ inventory_hostname }}
user=root
passwd=Hardware1
cli="request system snapshot slice alternate"
dest="{{ inventory_hostname }}.txt"
运行该命令后,大约 120 秒后,我收到以下错误:
fatal: [192.168.2.254]: FAILED! => {"changed": false, "failed": true, "module_stderr": "/usr/local/lib/python2.7/dist-packages/jnpr/junos/device.py:652: RuntimeWarning: CLI command is for debug use only!\n warnings.warn(\"CLI command is for debug use only!\", RuntimeWarning)\nTraceback (most recent call last):\n File \"/home/pkb/.ansible/tmp/ansible-tmp-1457428640.58-63826456311723/junos_cli\", line 2140, in <module>\n main()\n File \"/home/pkb/.ansible/tmp/ansible-tmp-1457428640.58-63826456311723/junos_cli\", line 177, in main\n dev.close()\n File \"/usr/local/lib/python2.7/dist-packages/jnpr/junos/device.py\", line 504, in close\n self._conn.close_session()\n File \"/usr/local/lib/python2.7/dist-packages/ncclient/manager.py\", line 158, in wrapper\n return self.execute(op_cls, *args, **kwds)\n File \"/usr/local/lib/python2.7/dist-packages/ncclient/manager.py\", line 228, in execute\n raise_mode=self._raise_mode).request(*args, **kwds)\n File \"/usr/local/lib/python2.7/dist-packages/ncclient/operations/session.py\", line 28, in request\n return self._request(new_ele(\"close-session\"))\n File \"/usr/local/lib/python2.7/dist-packages/ncclient/operations/rpc.py\", line 342, in _request\n raise TimeoutExpiredError('ncclient timed out while waiting for an rpc reply.')\nncclient.operations.errors.TimeoutExpiredError: ncclient timed out while waiting for an rpc reply.\n", "module_stdout": "", "msg": "MODULE FAILURE", "parsed": false}
我认为这是超时,我可能是错的。但令我头疼的是,如此简单的任务却让我无法完成。