上一篇,咱们总结了下,ansible里的variables,这东西是从哪里来的。楼主举的例子可能都比较白痴,不过重在说明原理和过程,大伙有实际需求的时候,可以弄点高深的玩玩。
说过了,variables来自哪里,那variables该咋用呢?
说起用,用可以简单的用,也可以复杂的用,简单的用variables,直接{{variable}}这样用俩大括号括起来就OK了。高深的用,就要运用的更加灵活,可以对变量进行处理,结合循环,条件选择等流程控制方法使用。
说到variables,无外乎用在俩地方,playbooks和template里面
mark一下jinja2官方文档
http://jinja.pocoo.org/docs/templates/#builtin-filters
下面楼主整个没啥实际作用小例子,测试一下功能。
简单说明一下,
19行,故意执行一个错误的命令
25,29,30,34行,都通过|,对变量做了处理。 | 是jinja2里面的filter,意思就是咱们这个
变量|方法,通过|后面的方法对变量进行处理,得到一个新的结果。
25行判断result是failed还是success了,当falied的时候返回True
29行,取list1和list2两个列表的合集
30行,判断dic[‘dic1‘]的value是否匹配"li*",匹配返回True,否则False
34行,比较大小,判断dic[‘dic3‘]是否等于10,等于返回True,不等返回False
类似的filter还有很多很多,这里就不一一列举了,大伙没事可以去看看官网或者jinja2的官网
再看一下template里面的内容
1,2,10行用到了facts
9行,用到了,自定义模块返回的facts,9行的default(0)是设定默认值,如果chengge这个变量不存在,则这个表达式的结果为0
5行,用到了咱们在playbooks里面定义的variables,及template的filter功能
8行和10行,用到了ansible里面的三个内置变量中的俩个,三个分别是groups,group_names,hostvars
差不多就这些了,看下结果吧
OK,回家!
ansible(六)variables(二)使用