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认定为数值了,而小数也是数值
本文详细介绍了Ansible Playbook中的条件判断机制,包括when关键字的使用、比较运算符、逻辑运算符以及如何判断远程主机版本、路径、变量、执行结果等。深入解析了如何利用Ansible的条件判断来实现灵活的任务执行流程。
——Ansible(14)&spm=1001.2101.3001.5002&articleId=108247342&d=1&t=3&u=469faa56988b4c439a19c2135594f2a3)
2039

被折叠的 条评论
为什么被折叠?



