Ansible自动化运维之Playbook条件判断

在ansible中,通过when关键字进行条件判断,判断方式有文件、变量、路径和执行结果等,然后根据结果决定相应的操作。

基本判断逻辑:

类型 说明
字符串 使用单引号或双引号
数字 整数,浮点数
列表 [item1, item2, ...]
元组 (item1, item2, ...)
字典 {key1:value1, key2:value2, ...}
布尔型 true false
算术运算 + - * / // % **
比较操作 == != > >= < <=
逻辑运算 and or not
流表达式 for if when

0x01 判断变量

结果 说明
defined 判断变量是否已经定义,已定义返回真
undefined 判断变量是否已经定义,未定义返回真
none 判断变量是否已经定义且赋值,当变量的值为空时返回真

示例:

0x02 判断执行结果

通过任务的返回信息判断其执行状态:

结果 说明
success, succeeded 成功则返回真
failure, failed 失败则返回真
change, changed 状态为changed则返回真
skip, skipped 当不满足任务执行条件被跳过时返回真

示例:

0x03 判断文件目录

该模块貌似有问题,测试时全部返回“skipping”,ansible版本2.9.23。

结果 说明
file 判断路径是否是一个文件,是则返回真
directory 判断路径是否是一个目录,是则返回真
link 判断路径是否是一个软连接,是则返回真
mount 判断路径是否是一个挂载点,是则返回真
exists 判断路径是否存在,存在则返回真

示例:

0x04 其他判断逻辑

结果 说明
version 比较两个版本号的大小
subset 判断一个list是不是另一个list的子集,是则返回真
siperset 判断一个list是不是另一个list的父集,是则返回真
string 判断对象是否为字符串,是则返回真
number 判断对象是否为数字,是则返回真

示例:

更多示例

示例1·not取反:

示例2·and多重:

示例3·命令执行结果:

原创文章禁止转载:技术学堂 » Ansible自动化运维之Playbook条件判断

精彩评论

2+6=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏