ansible基础-Jinja2模版

ansible基础-Jinja2模版 | 测试

作者/魏萌 图片/来源于网络

目录结构

一 简介

注:本文demo使用ansible2.7稳定版

Jinja2的测试语句被用来评估一个条件表达式,并且最终返回True或False,经常和「when」语句搭配使用。

测试语句和

过滤器

的相同点:测试语句的条件表达式也在控制端执行,在目的主机端生效。

测试语句和过滤器的不同点:

前者多被用于「比较」,执行结果是True或False,而后者多被用于对数据的操作与转换,执行结果是我们期望的数据内容或数据格式。

语法不同,前者使用「is」,后者使用「|」

测试语句的语法很简单,写法如下:

举个,task执行结果为failed时,则返回True:

二 测试字符串

关键字「match」和「search」,参数可以使用正则表达式,用来查找一个字符串是否与测试语句相匹配。

通过上面示例,我们可以看出:

关键字「match」用于判断一个字符串的完整匹配

关键字「search」用于判断一个字符串的部分匹配

三 测试版本号

关键字「version」(旧版本为「version_compare」),用于比较版本号。

例如,测试当前centos操作系统的版本号是否大于等于「7.2.1511」,可以这样写:

如果当前操作系统版本号大于或等于「7.2.1511」,条件表达式返回True,否则返回False。

「version」接受的运算符如下:

「version」也可以接受「strict」参数,这个参数默认值为「False」,如果设置为「True」则ansible会进行更严格的版本检查:

四 测试列表

关键字「superset」和「subset」,用于测试一个列表是否包含或被包含于另一个列表:

关键字「all」和「any」,用于检查列表里的元素的真假:

用大学学的离散数学概括下:

all:一假则假

any:一真则真

五 测试文件路径

测试文件路径的关键字从字面上就能看出来其含义,下面直接上示例:

注:这个特性在ansible>=2.5的版本中才有,在生产实践中,可以替换旧版本中「stat」+「register」+「when」实现的功能。

六 测试任务执行结果

测试任务执行结果也比较通俗易懂,示例如下:

七 本节应该掌握的技能

掌握测试语句与过滤器的相同点和异同点。

掌握在playbook和模版中灵活运用测试语句。

八 参考链接

https://docs.ansible.com/ansible/latest/user_guide/playbooks_tests.html

- END -

没点关注的童鞋点一波关注

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181117G1ASEQ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券