Linux企业实战之自动化运维工具(二十)——Ansible(14)

本文详细介绍了Ansible Playbook中的条件判断机制,包括when关键字的使用、比较运算符、逻辑运算符以及如何判断远程主机版本、路径、变量、执行结果等。深入解析了如何利用Ansible的条件判断来实现灵活的任务执行流程。

playbook(判断)

  • when关键字
    绝大多数语言中,都使用if作为条件判断的关键字,而在ansible中,条件判断的关键字是when,我们可以使用when关键字为任务指定条件,条件成立,则执行任务,条件不成立,则不执行任务。
    在这里插入图片描述
    在这里插入图片描述
    只输出大于1的数字
在ansible中,我们可以使用如下比较运算符

== :比较两个对象是否相等,相等为真

!= :比较两个对象是否不等,不等为真

> : 比较两个值的大小,如果左边的值大于右边的值,则为真

< :比较两个值的大小,如果左边的值小于右边的值,则为真

>= :比较两个值的大小,如果左边的值大于右边的值或左右相等,则为真

<= :比较两个值的大小, 如果左边的值小于右边的值或左右相等,则为真
  • 判断远程主机版本
    我们可以用一条命令查看远程主机的的版本信息
    在这里插入图片描述
    playbook写法一:
    在这里插入图片描述
    在这里插入图片描述
写法2
---
- hosts: testB
  remote_user: root
  tasks:
  - debug:
      msg: "System release is redhat7"
    when:
    - ansible_distribution == "RedHat"
    - ansible_distribution_major_version == "7"
  • 可用的逻辑运算符如下

    • and :逻辑与,当左边与右边同时为真,则返回真
    • or :逻辑或,当左边与右边有任意一个为真,则返回真
    • not :取反,对一个操作体取反
    • ( ) :组合,将一组操作体包装在一起,形成一个较大的操作体
      多个判断信息组合
      在这里插入图片描述
      在这里插入图片描述
      否定判断
      在这里插入图片描述
      在这里插入图片描述
  • 通过返回值判断执行情况
    什么是返回值?有点像shell中的echo $?
    在这里插入图片描述
    在这里插入图片描述
    修改内容,让estimate5.yaml无法正常执行
    在这里插入图片描述
    在这里插入图片描述
    修改内容,忽略错误,继续执行下面的task任务
    在这里插入图片描述
    在这里插入图片描述
    此时我们可以看到当task2无法正常执行时,rc为127(不为0)

  • 通过返回值判断目录是否存在
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • test判断:我们在shell中经常会用test来判断
    在命令行中通过test -e 来判断目录文件是否存在,并且通过查看返回值来查看结果
    在这里插入图片描述
    在脚本中:如果符合判断条件返回true 不符合返回false
    在这里插入图片描述
    判断存在
    在这里插入图片描述
    在这里插入图片描述
    判断不存在
    在这里插入图片描述
    在这里插入图片描述

写法二: 否定not可以写在前面

---
- hosts: testB
  remote_user: root
  gather_facts: no
  vars:
    testpath: /testdirllll
  tasks:
  - debug:
      msg: "file not exist"
    when: not testpath is exists
  • 判断变量:

    判断变量的一些tests

    • defined : 判断变量是否已经定义,已经定义则返回真
    • undefind : 判断变量是否已经定义,未定义则返回真
    • none : 判断变量值是否为空,如果变量已经定义,但是变值为空,则返回真
      在这里插入图片描述
      在这里插入图片描述
  • 判断执行结果

    判断执行结果的一些tests:

    • success或succeeded:通过任务的返回信息判断任务的执行状态,任务执行成功则返回真

    • failure或failed:通过任务的返回信息判断任务的执行状态,任务执行失败则返回真

    • change或changed:通过任务的返回信息判断任务的执行状态,任务执行状态为changed则返回真

    • skip或skipped:通过任务的返回信息判断任务的执行状态,当任务没有满足条件,而被跳过执行时,则返回真
      在这里插入图片描述
      在这里插入图片描述

  • 判断路径

    • 判断路径的一些tests:

    注:如下tests的判断均针对于ansible主机中的路径,与目标主机无关

    • file : 判断路径是否是一个文件,如果路径是一个文件则返回真

    • directory : 判断路径是否是一个目录,如果路径是一个目录则返回真

    • link : 判断路径是否是一个软链接,如果路径是一个软链接则返回真

    • mount: 判断路径是否是一个挂载点,如果路径是一个挂载点则返回真

    • exists: 判断路径是否存在,如果路径存在则返回真!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 判断字母包含的字符串是否是纯大/小写

    判断字符串的一些tests:

    • lower:判断包含字母的字符串中的字母是否是纯小写,字符串中的字母全部为小写则返回真

    • upper:判断包含字母的字符串中的字母是否是纯大写,字符串中的字母全部为大写则返回真

在这里插入图片描述
在这里插入图片描述

  • 判断数值是奇数/偶数/能否被某数整除

    判断数值的一些tests

    • even : 判断数值是否是偶数,是偶数则返回真

    • odd : 判断数值是否是奇数,是奇数则返回真

    • divisibleby(num) : 判断是否可以整除指定的数值,如果除以指定的值以后余数为0,则返回真
      在这里插入图片描述
      在这里插入图片描述

  • version:可以用于对比两个版本号的大小,或者与指定的版本号进行对比,使用语法为version(‘版本号’, ‘比较操作符’)当使用version吋,支持多种风格的比较操作符,version支持的比较操作符如下:

    • 大于: >, gt

    • 大于等于: >=, ge

    • 小于: <,lt

    • 小于等于: <<=,le

    • 等于: ==, =, eq

    • 不等于: !=, <>, ne

判断version(对比版本号)
在这里插入图片描述
在这里插入图片描述

  • 判断list的子集和父集关系

    • subset:判断一个list是不是另一个list的子集,是另一个list的子集时返回真
    • superset:判断一个list是不是另一个list的父集,是另一个list的父集时返回真
      在这里插入图片描述
      在这里插入图片描述
  • 判断是否为字符串
    在这里插入图片描述
    在这里插入图片描述
    注意:ansible认为:数字不是字符串,但如果给数字加上信号就是字符串了。字母是字符串
    在这里插入图片描述
    在这里插入图片描述
    注意:字母的组合也是字符串,并且加不加引号都是字符串

  • 判断是否为数值
    在这里插入图片描述
    在这里插入图片描述
    注意:数字加上引号后就不被ansible认定为数值了,而小数也是数值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值