前言:

   学习下ansible的playbooks的状态配置管理,说来puppet saltstack都有类似的叫法,只是ansible的叫法更犀利,我当时一看playbook还以为是花花公子的playboy。要使用ansible就要深入学习playbook配置及模板。playbook的模板使用python的jinja2模块来处理的。学习过saltsatck的朋友,应该对此模板是比较熟悉的。 

注:到底是playbook还是playbooks。。。。

先把官网的简单几个语法给说明下。

如果有些系统做了相关的sudo限制,需要在playbooks里面开启sodu,或者直接偷懒,权限直接为root !

官网的基本完事了,这里就直接实战吧。先说一个简单的ansible playbook的例子。

然后我们执行一下,Playbook 采用 YAML 语法结构,因此它们一般比较易于阅读并加以配置。 上面的意思已经很简单明了了,就是创建一个xiaorui的用户,里面引用了一个user的变量,用jinja2模板给赋值进去了。

原文地址为:blog.xiaorui.cc

wKioL1N3fsaSHalzAAHTC0rzDIA835.jpg

下面的还用我说么?  多了一个service的调用,nginx的状态保持为启动。



wKioL1N3gIKy6A3FAALVbped54k491.jpg

原文地址为:blog.xiaorui.cc

使用copy传送文件的时候,经常出些问题,是ansible需要python-selinux包而已.

yum install -y libselinux-python 就可以行了

copy是传送文件用的。

wKiom1N3hCzzIyC3AAFLhl8AHvo882.jpg

根据一些特殊的情况,可以做更多的模板,比如这样



wKioL1N3hTagsbsoAAJYvkUANGw451.jpg


不只是这样,我可以把刚才那个say变量传到文件里面。 爽吧?   其实和saltstack一样。。。。

原文地址: blog.xiaorui.cc

wKiom1N3jQDiuj_bAAM_9w42TAg068.jpg

再来一个和puppet exec一样执行外部命令的模块

还有一种shell模块的使用方法 。

ansible在多任务下,推荐使用多进程模式的。其实就是用multiprocess做的多进程池 !  -f 10  就是limit 10个任务并发。

顺便讲解下,在ansible下,类似puppet的facter,saltstack grains的自定义变量。  -m setup 模块

咱们可以在模板文件中,引用这些setup系统变量的

如果一下子查看所有的setup会信息太多,有些乱,可以用filter过滤下

如果想把这些 facts加入到template模板中,中途可能会遇到几处让人困扰的地方。


这边需要开启facts变量功能, gather_facts: no 或者是false是关闭,gather_facts:yes 或者是true都是开启。 当时没注意,找到了官方的实例,直接就干,结果sx了。咋都不行,总是提示define为定义。。。 原来facts没有开。。



wKioL1N3oJaz76H_AAGIIBeF-IU319.jpg


咱们在看看对端服务器的文件渲染情况。

wKiom1N3oTLCOVDzAApi8BbXKhQ529.jpg

用过puppet saltstack的朋友,知道Variables最后可以扩展什么东西,可以高度的定义每个配置文件。  可以根据ip地址,推送配置文件所需要的绑定的ip地址,根据内存大小,定义nginx缓存的内容大小,根据你的cpu核数,做nginx cpu的绑定,根据你的系统,我需要文件路径的判断等等。。。。。


虽然这些facts够多了,貌似很全,但是如果还不够你用,还不足以让你标识定位一台服务器,咋办? 赞一个 ansible不愧是比saltstack在国外更受欢迎的集群配置工具(据说。。。。 看了youtube的视频,几个老外说,他们热衷于去各种系统框架大会,ansible要比saltstack用的多点,其实我在有一篇文章说过,ansible为啥多? 有兴趣翻翻看看)。 说回来,saltstack的框架确实相当的优秀,但由于更新太频繁,自己不幸又是那是yum epel的人,结果中枪了。。。。

爬虫真牛逼,这里我注明下原文的地址。blog.xiaorui.cc

nima,扯远了,继续聊刚才的话题。如何自定义ansible facts变量,官方说的很明白, 在控制机创建一个文件就行了。。。

wKioL1N3p5KAA_rMAAJeeiqIkag935.jpg


看懂了吧。 我刚才测试的时候,方法有些土,直接创建的,你可以参照一个例子,copy文件。

ansbile还有一个有意思的功能,可以判断上个tasks的值,根据这个值在做判断。

里面的when , foot_result。。。。 懂了吧

这个是测试的过程

好了,先这么着吧。。。。 这两天再讲解下 用ansible如何多元配置nginx、lvs keepalived的环境。



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!

ansible插件之filter_plugins实现jinja2自定义filter过滤器

前言:    filter_plugins是什么? 这个单词拆解下,filter !  熟悉jinja2模板的人,到知道他是过滤器,可以在模板中以管道的方式...

阅读全文