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

posted @   paul_hch  阅读(622)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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'))
点击右上角即可分享
微信分享提示