ansible(五)variables(一)定义

说起变量,ansible中的变量,差不多等于salt-stack里面的pillar+grains吧

ansible中的变量主要来源于,楼主总结了一下,大概有这么几个地方吧

Inventory(host vars,group vars)

playbook里面

命令行

playbook执行task过程中产生结果,可以register起来,作为变量给下面的task使用

roles里面

来自于nodes上面的facts

这些类型的变量,1-4一般来说都是咱们用户自己定义的,而5facts则主要是ansible从nodes上面拉取过来的,当然facts也可以自己定义。

下面咱们就来看看,这些变量是怎么玩的吧?

先看看Inventory里面的变量吧,这个第二篇的时候写过,再写一下吧
wKioL1OyOnXg2xBFAAHrJW6zNzE525.jpg

再看看playbooks里面的变量吧

wKiom1OyOYfANSmPAACvKb0tTeg294.jpg

OK,大伙也看到了playbooks里面可以定义变量,也可以导入外部的文件里面的变量

好,大伙再一块看看命令行里面的变量吧。

命令行,传递变量给playbooks大概有三种方式吧

看看第1种方式吧,比较简单了。

wKiom1OySC2wrcIoAAKsYn3qb5s087.jpg

第2种方式,以json的格式传递变量。

wKioL1OySQnBWSrOAAHenL-EzXM119.jpg

第3种方法,传入json文件。不过,第二种,第三种方法,一般用于变量形式较复杂的情况。不过,一般估计很少用吧,因为在命令行传遍了本来就不多用吧,还是第一种命令行传递方式稍微常用点。

wKiom1OySfjh98iOAAI2bf-giK0021.jpg

OK,第四种方法,register task的结果,作为变量,给下面的task使用

看一下,小例子。这个比较简单,就不打印结果了。

wKiom1Oyo2SAZSeRAACUxR9Oc9I874.jpg

OK,定义变量的第五种方法,在roles里面。

这个就不多说了。上一篇刚写过。

wKiom1OyS0rAetcRAAD1PyhWe0Y083.jpg

第六种方法,从nodes获取facts,facts和salt-stack里面的grains差不多,主要是nodes本身的一个系统信息,bios信息,网络,硬盘等等信息。。不过楼主观察了下,facts比salt-stack中的grains获取的信息。要更多一些。

wKiom1OyTPmTjRomAACSQ5taLp8855.jpg

OK,咱们在这里说怎么从nodes上获取facts,前面咱们不是说了,可以自己定义facts吗?

自定义facts有多种方法,有能力的同学,可以直接去修改,setup这个模块。不过官方的东西,咱们还是不要随便改了。

第二种方法,定义在nodes上面,默认定义在/etc/ansible/fact.d/*fact里面。

咱们定义在这里面文件的格式,有三种格式吧,分别是ini格式,json格式,或者可执行文件,不过他们返回的必须是json格式。

看个例子吧

先看看咱们定义的文件内容分别为json,ini,及可执行的脚本的三个文件吧

wKiom1OyZjPyXdyMAAGA_cFxbZQ734.jpg

OK,在node上创建文件夹并把测试的fact文件传送过去。修改lss.fact这个文件的属性为其它组可执行的权限,否则待会执行不了,楼主用-s参数试了下,也执行不了

wKiom1OybHjiC4b5AAJl5VuIerU467.jpg

好,这种自定义的方法,就算是说完了。还有一种自定义的方法,其实就是自定义模块,只不过这个模块,返回一个facts格式的结果罢了。

好,咱们在ansible的module里面,自定义一个文件夹,放咱们自己的module,然后丢给自定义的module进去
wKioL1Oyc_3DOsLfAAI2dFz6ahw112.jpg

OK,看到了吧,这里面是从chengge这个模块里面得到了一个输出结果,但是我们咋用呢?

其实,我们想用模块里返回的facts,那么显然,我们使用之前,肯定要先执行以下我们自定义的module

OK,看看这个例子吧

先看看playbooks

wKioL1OydVWTWNuuAACVUUgiIhc254.jpg

再看看,执行结果

wKioL1OydZiR2Sv-AAHVPuAM0dU904.jpg

©著作权归作者所有:来自51CTO博客作者lixiaocheng18的原创作品,如需转载,请注明出处,否则将追究法律责任

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值