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 @ 2023-01-04 13:29  paul_hch  阅读(536)  评论(0编辑  收藏  举报