playbooks是 一个不同于使用Ansible命令行执行方式的模式,其功能更强大灵活。简单来说,playbook是一个非常简单的配置管理和多主机部署系统,不同于任何已经存在的模式,可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置,可以按照指定的操作步骤有序执行,支持同步和异步方式。值得注意的是playbook是通过YAML格式来进行描述定义的。

playbook最佳使用方法:

  • 鼓励文件的重用,尽量使用include和role避免重复的代码。
  • 尽量把大的文件分成小的文件

https://github.com/ansible/ansible-examples

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
production                # inventory file for production servers
staging # inventory file for staging environment
group_vars/
group1 # 在这里,我们将变量分配给特定的组
group2 # ""
host_vars/
hostname1 # 如果系统需要特定的变量,请将其放在此处
hostname2 # ""
library/ # 如果有任何自定义模块,请将其放在此处(可选)
filter_plugins/ # i如果有任何自定义过滤器插件,请将其放在此处(可选)
site.yml # master playbook
webservers.yml # 适用于Web服务器层的playbook
dbservers.yml # playbook for dbserver tier
roles/
common/ # 代表"role"的命名
tasks/ #
main.yml # <-- tasks file can include smaller files if warranted
handlers/ # 处理程序
main.yml # <-- handlers file
defaults/ #
main.yml # <-- default lower priority variables for this role
vars/ #
main.yml # <-- variables associated with this role
files/ #
bar.txt # <-- files for use with the copy resource
foo.sh # <-- script files for use with the script resource
templates/ # <-- files for use with the template resource
ntp.conf.j2 # <------- templates end in .j2
README.md # <-- role 角色用途 及 使用说明
meta/ #
main.yml # <-- role dependencies
webtier/ # 上述“ common”相同的结构,用于webtier角色
monitoring/ # ""
fooapp/ # ""

ansible目录及文件含义