ansible playbook
Playbook是使用yaml语言定制的,YAML是一个可读性高的用来表达资料序列的格式
Yml语法:
简单示例1:
简单示例1:
定义一个yml: 对webserver组中的主机,调用group和user模块创建组和用户;对dbserver组中的主机调用copy模块复制文件

执行yml
执行第二遍,返回的所有结果为ok不是表示执行ok而是所有条件都满足

执行第二遍,返回的所有结果为ok不是表示执行ok而是所有条件都满足

简单示例2:搭建一个apache环境

准备需要复制到被管理主机的httpd.conf配置文件,修改监听端口为8080
验证:httpd软件包已经安装,服务开机自动启动,而且也监听8080端口
应用之前先停止webserver组中的httpd服务,并卸载
执行:

验证:httpd软件包已经安装,服务开机自动启动,而且也监听8080端口
YAML中的变量:
1、自定义变量

2、facts收集被管理主机的信息时,会返回很多变量,这里就是调用了返回的ipv4地址变量
示例:将客户端返回的ip地址,创建webserver组中主机的/tmp/test.ans文件。

执行结果如下:

验证:使用的变量名一样,但是生成的内容却是被管理主机的ip地址
3、主机变量
示例:对webserver组中的主机,定义testvar变量,值为ip地址后两位
执行yml
验证:相同变量,不同主机得到了不同的值
设置yml文件,和使用其他变量一样的方法调用变量:

执行yml

验证:相同变量,不同主机得到了不同的值
4、配置文件中引用变量(模版)
示例:使用变量指定httpd.conf配置文件中一些参数的值
修改Ansible的hosts文件定义主机变量
定义yml:定义的过程中使用变量,根据不同主机定义的值不同,生成的配置文件参数也不同

执行过程

验证:相同的playbook由于对hosts指定的变量不同,所以生成不同的配置文件
条件测试When语句
示例:添加用户,但是只对主机名为node2的主机添加。
执行结果如下:

执行结果如下:

迭代
当有需要重复性执行的任务时,可以使用迭代机制。其使用格式为将需要迭代的内容定义为item变量引用,并通过with_items语句来指明迭代的元素列表即可。
例如:
上面语句的功能等同于下面的语句:
ansible的循环机制还有更多的高级功能,具体请参见官方文档(http://docs.ansible.com/playbooks_loops.html)

上面语句的功能等同于下面的语句:
事实上,with_items中可以使用元素还可为hashes,例如:

ansible的循环机制还有更多的高级功能,具体请参见官方文档(http://docs.ansible.com/playbooks_loops.html)