绝大多数语言中,都使用"if"作为条件判断的关键字,而在ansible中,条件判断的关键字是"when"
我们可以使用when关键字为任务指定条件,条件成立,则执行任务,条件不成立,则不执行任务
在ansible中,我们可以使用如下比较运算符
== :比较两个对象是否相等,相等为真
!= :比较两个对象是否不等,不等为真
>:比较两个值的大小,如果左边的值大于右边的值,则为真
< :比较两个值的大小,如果左边的值小于右边的值,则为真
>= :比较两个值的大小,如果左边的值大于右边的值或左右相等,则为真
<= :比较两个值的大小,如果左边的值小于右边的值或左右相等,则为真
可用的逻辑运算符如下
and :逻辑与,当左边与右边同时为真,则返回真
or :逻辑或,当左边与右边有任意一个为真,则返回真
not :取反,对一个操作体取反,
( ) :组合,将一组操作体包装在一起,形成一个较大的操作体
判断变量的-些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,则返回真
其他的一些test
version:可以用于对比两个版本号的大小,或者与指定的版本号进行对比,使用语法为version(‘版本号’, '比较操作符’)当使用version时,支持多种风格的比较操作符,你可以根据自己的使用习惯进行选择,version支持的比较操作符如下:
大于: >, gt
大于等于: >=, ge
小于:<<,It
小于等于: <=, le
等于: ==, =, eq
不等于: !=, <> , ne
subset: 判断一个list是不是另一个list的子集,是另一个list的子集时返回真
superset :判断一个list是不是另一个ist的父集,是另一个list的父集时返回真
(1)判断大于1


(2)and
回顾

剧本

另一种形式

执行

(3)or


(4)==


(5)!=


因为我们没有testabc这个目录所以会报错,无法执行下面的语句
下面我们解决这个问题ignore_errors


(6)exists
存在的目录


不存在的目录



(7)defined


(8)success,failure,skip

(9)file,directory,link,mount



(10)upper,lower


(11)odd,even,divisibleby


(12)其他操作符


(13)subset


(14)判断是不是字符串或者数字




block模块
(1)一个判断执行多个任务


(2)block结合rescue
先看一个例子


用block实现


示例


示例


示例


(3)always


fail模块
(1)只输出了1 2


(2)只输出了1


(3)只有shell changed了




(4)failed_when


(5)changed_when


本文详细介绍了Ansible中when关键字的使用方法,包括各种比较运算符、逻辑运算符和特殊判断条件如definedsuccess等。还涵盖了如何判断路径、字符串属性及数值特征,并展示了version和集合判断的用法。
1898

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



