Ansible代码不起作用

时间:2017-08-21 15:29:50

标签: ansible

我尝试使用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'“}

1 个答案:

答案 0 :(得分:1)

更好地使用result.rc中的命令退出代码(返回代码),而不是读取和匹配文本输出。来自Debian 9的手册页:

  

如果ping根本没有收到任何回复数据包,它将以代码1退出。如果指定了数据包计数和截止时间,则数量少于计数          数据包在截止时间到达之前收到,它也将以代码1退出。在其他错误上,它以代码2退出。否则退出          代码为0。

例如:

resolve

在Debian 9.1上使用Ansible 2.3.1进行测试。当马格努斯运行并且可达时它成功,当马格努斯暂停时失败。