设为首页 收藏本站
查看: 1550|回复: 1

[经验分享] ansible(五)variables(一)定义

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-11-20 11:31:39 | 显示全部楼层 |阅读模式
说起变量,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里面的变量吧,这个第二篇的时候写过,再写一下吧
wKiom1OyOYfANSmPAACvKb0tTeg294.jpg
再看看playbooks里面的变量吧
wKiom1OySC2wrcIoAAKsYn3qb5s087.jpg
OK,大伙也看到了playbooks里面可以定义变量,也可以导入外部的文件里面的变量
好,大伙再一块看看命令行里面的变量吧。
命令行,传递变量给playbooks大概有三种方式吧
看看第1种方式吧,比较简单了。
wKioL1OySQnBWSrOAAHenL-EzXM119.jpg
第2种方式,以json的格式传递变量。

wKiom1OySfjh98iOAAI2bf-giK0021.jpg
第3种方法,传入json文件。不过,第二种,第三种方法,一般用于变量形式较复杂的情况。不过,一般估计很少用吧,因为在命令行传遍了本来就不多用吧,还是第一种命令行传递方式稍微常用点。
wKiom1Oyo2SAZSeRAACUxR9Oc9I874.jpg
OK,第四种方法,register task的结果,作为变量,给下面的task使用
看一下,小例子。这个比较简单,就不打印结果了。
wKiom1OyS0rAetcRAAD1PyhWe0Y083.jpg

OK,定义变量的第五种方法,在roles里面。
这个就不多说了。上一篇刚写过。
wKiom1OyTPmTjRomAACSQ5taLp8855.jpg
第六种方法,从nodes获取facts,facts和salt-stack里面的grains差不多,主要是nodes本身的一个系统信息,bios信息,网络,硬盘等等信息。。不过楼主观察了下,facts比salt-stack中的grains获取的信息。要更多一些。
wKiom1OyZjPyXdyMAAGA_cFxbZQ734.jpg

OK,咱们在这里说怎么从nodes上获取facts,前面咱们不是说了,可以自己定义facts吗?
自定义facts有多种方法,有能力的同学,可以直接去修改,setup这个模块。不过官方的东西,咱们还是不要随便改了。
第二种方法,定义在nodes上面,默认定义在/etc/ansible/fact.d/*fact里面。
咱们定义在这里面文件的格式,有三种格式吧,分别是ini格式,json格式,或者可执行文件,不过他们返回的必须是json格式。
看个例子吧
先看看咱们定义的文件内容分别为json,ini,及可执行的脚本的三个文件吧
wKiom1OybHjiC4b5AAJl5VuIerU467.jpg
OK,在node上创建文件夹并把测试的fact文件传送过去。修改lss.fact这个文件的属性为其它组可执行的权限,否则待会执行不了,楼主用-s参数试了下,也执行不了
wKioL1Oyc_3DOsLfAAI2dFz6ahw112.jpg

好,这种自定义的方法,就算是说完了。还有一种自定义的方法,其实就是自定义模块,只不过这个模块,返回一个facts格式的结果罢了。
好,咱们在ansible的module里面,自定义一个文件夹,放咱们自己的module,然后丢给自定义的module进去
wKioL1OydVWTWNuuAACVUUgiIhc254.jpg

OK,看到了吧,这里面是从chengge这个模块里面得到了一个输出结果,但是我们咋用呢?
其实,我们想用模块里返回的facts,那么显然,我们使用之前,肯定要先执行以下我们自定义的module
OK,看看这个例子吧
先看看playbooks
wKioL1OydZiR2Sv-AAHVPuAM0dU904.jpg
再看看,执行结果



wKioL1Oyc_3DOsLfAAI2dFz6ahw112.jpg
wKiom1OybHjiC4b5AAJl5VuIerU467.jpg
wKiom1OyZjPyXdyMAAGA_cFxbZQ734.jpg
wKiom1OyS0rAetcRAAD1PyhWe0Y083.jpg
wKiom1Oyo2SAZSeRAACUxR9Oc9I874.jpg
wKiom1OySfjh98iOAAI2bf-giK0021.jpg
wKiom1OyOYfANSmPAACvKb0tTeg294.jpg
wKioL1OyOnXg2xBFAAHrJW6zNzE525.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-31691-1-1.html 上篇帖子: ansible(四)roles 下篇帖子: ansible(六)variables(二)使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表