首页 > 代码库 > ansible(六)variables(二)使用

ansible(六)variables(二)使用

上一篇,咱们总结了下,ansible里的variables,这东西是从哪里来的。楼主举的例子可能都比较白痴,不过重在说明原理和过程,大伙有实际需求的时候,可以弄点高深的玩玩。

说过了,variables来自哪里,那variables该咋用呢?

说起用,用可以简单的用,也可以复杂的用,简单的用variables,直接{{variable}}这样用俩大括号括起来就OK了。高深的用,就要运用的更加灵活,可以对变量进行处理,结合循环,条件选择等流程控制方法使用。


说到variables,无外乎用在俩地方,playbooks和template里面

mark一下jinja2官方文档

http://jinja.pocoo.org/docs/templates/#builtin-filters

下面楼主整个没啥实际作用小例子,测试一下功能。

wKioL1OyoRvyghXPAAH5-7QlvFE096.jpg

简单说明一下,

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里面的内容

wKioL1OyoV2RKc0DAAErPxs5DUo459.jpg

1,2,10行用到了facts

9行,用到了,自定义模块返回的facts,9行的default(0)是设定默认值,如果chengge这个变量不存在,则这个表达式的结果为0

5行,用到了咱们在playbooks里面定义的variables,及template的filter功能

8行和10行,用到了ansible里面的三个内置变量中的俩个,三个分别是groups,group_names,hostvars


差不多就这些了,看下结果吧

wKioL1Oypxfib3waAAMmrTdMPZU623.jpg

OK,回家!



本文出自 “西风” 博客,请务必保留此出处http://lixcto.blog.51cto.com/4834175/1433245