0代表成功,-1代表失败
when: result.stdout.find('JAVA_HOME') == -1
当文件中没有JAVA_HOME关键字时执行,等于失败才执行,结果没有JAVA_HOME关键字时执行
when: result.stdout.find('JAVA_HOME') != -1
当文件中有JAVA_HOME关键字时执行,即不等于失败,即为成功,结果有JAVA_HOME关键字时执行
when: result.stdout.find('JAVA_HOME') == 0 和 when: result.stdout.find('JAVA_HOME') != -1 效果一样,结果有JAVA_HOME关键字时执行
举例说明
# cat /tmp/test.sh #!/bin/bash echo "failed"
playbook文件内容
# cat register_test.yaml --- - hosts: test remote_user: root gather_facts: no #不采集对方机器的数据,提高执行速度 tasks: - command: /tmp/test.sh ignore_errors: True #如果命令执行不成功,即 echo $?不为0,则在其语句后面的ansible语句不会被执行,导致整个程序中止。 register: result - file: path=/tmp/test state=directory #when: result.stdout == 'failed' when: result.stdout.find('failed') != -1 # 结果有failed关键字时执行,创建目录/tmp/test - name: "打印检查结果" # 打印result结果 debug: msg: "{{result}}" # 如果只打印出result变量的结果result.stdout
执行结果
result.stdout.find('failed') != -1是模糊匹配,如果要严格匹配
when: result.stdout == 'failed'
上面'failed'是严格匹配,也可以使用模糊查找,如result.stdout.find('failed') != -1也可以达到相同的效果
转载请注明出处!
参考
ansible-playbook如何判断并中断执行_51CTO博客_ansible-playbook命令
https://blog.51cto.com/faded/1762688
ansible-playbook根据shell判断状态 - 技术颜良 - 博客园
https://www.cnblogs.com/cheyunhua/p/14107819.html
Ansible 之 when判断语句使用_51CTO博客_ansible when
https://blog.51cto.com/u_12965094/2601377