ansible-条件判断when-8

逻辑运算符

在Ansible中,除了比较运算符,还支持逻辑运算符:
and:逻辑与,当左边和右边两个表达式同时为真,则返回真
or:逻辑或,当左右和右边两个表达式任意一个为真,则返回真
not:逻辑否,对表达式取反
():当一组表达式组合在一起,形成一个更大的表达式,组合内的所有表达式都是逻辑与的关系

比较运算符

==:比较两个对象是否相等,相等则返回真。可用于比较字符串和数字
!=:比较两个对象是否不等,不等则为真。
">":比较两个对象的大小,左边的值大于右边的值,则为真
<:比较两个对象的大小,左边的值小于右边的值,则为真
=:比较两个对象的大小,左边的值大于等于右边的值,则为真
<=:比较两个对象的大小,左边的值小于等于右边的值,则为真

条件判断

1.when的值是一个条件表达式,如果条件判断成立,这个task就执行,如果判断不成立,则task不执行
2.如果需要根据变量、facts(setup)或此前任务的执行结果来作为某task执行与否的前提时要用到条件测试,在Playbook中条件测试使用when子句。
3.在task后添加when子句即可使用条件测试:when子句支持jinjia2表达式或语法,

例如:满足这两个条件会在 /home/ 创建 123.test 文件

- name: touch centos
2   command: touch /home/123.test
3   when:
4     - ansible_distribution == "CentOS" #条件一:为Centos 系统
5     - ansible_distribution_major_version == "7" #条件二:版本号为7
6   tags:
7     - touch_Cent

组条件判断:当系统版本是“centos7” or(或者) “debian6” 时,创建目录

- name: "CentOS 6 and Debian 7 systems"
  command: mkdir  /home/test_new/CentOS -p
  when: (ansible_distribution ==  "CentOS" and ansible_distribution_major_version == "7") or    
        (ansible_distribution ==  "Debian" and ansible_distribution_major_version == "6")
  tags:
    - mkdir_Cent

你可能感兴趣的:(ansible-条件判断when-8)