Ansible when: result.stdout.find使用说明【原创】
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
(42条消息) ansible register详解_小懒虫不想写博客的博客-CSDN博客_ansible register
https://blog.csdn.net/iris_csdn/article/details/104634962
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2022-01-04 inotify+rsync双向同步【转】
2021-01-04 nginx_upstream_check_module报错500或403
2020-01-04 Python的property _getter和setter方法【转】
2018-01-04 shell函数中eof报错(warning: here-document at line 9 delimited by end-of-file (wanted `EOF'))