我尝试使用ansible来ping google.com fas我的节点上的互联网访问测试。当ping回复返回时,代码运行良好但是对于失败的尝试,我得到一个dict对象错误。有人可以为我理智检查下面的代码吗?下面还列出了我得到的错误。我确定这只是一个小问题。
- name: Checking Internet Access
ios_command:
commands: ping www.google.com source g0/1.1
provider: "{{cli}}"
wait_for:
- result[0] contains "!!!"
register: result
failed_when: "not '!!!' in result.stdout[0]"
致命:[192.168.12.252]:失败! => {“失败”:是的,“msg”:“条件检查'不是'!!!'在result.stdout [0]'失败。错误是:评估条件时出错(在result.stdout [0]中不是'!!!'):'dict对象'没有属性'stdout'“}
答案 0 :(得分:1)
更好地使用result.rc中的命令退出代码(返回代码),而不是读取和匹配文本输出。来自Debian 9的手册页:
如果ping根本没有收到任何回复数据包,它将以代码1退出。如果指定了数据包计数和截止时间,则数量少于计数 数据包在截止时间到达之前收到,它也将以代码1退出。在其他错误上,它以代码2退出。否则退出 代码为0。
例如:
resolve
在Debian 9.1上使用Ansible 2.3.1进行测试。当马格努斯运行并且可达时它成功,当马格努斯暂停时失败。