刚开始学习运用 playbook 时,可能会把 playbook 写成一个很大的文件,到后来可能你会但愿这些文件是能够方便去重用的,因此须要从新去组织这些文件。nginx
基本上,使用 include 语句引用 task 文件的方法,可容许你将一个配置策略分解到更小的文件中。使用 include 语句引用 tasks 是将 tasks 从其余文件拉取过来。由于 handlers 也是 tasks,因此你也能够使用 include 语句去引用 handlers 文件。handlers 文件来自 ‘handlers:’ section。学习
Playbook 一样能够使用 include 引用其余 playbook 文件中的 play。这时被引用的 play 会被插入到当前的 playbook 中,当前的 playbook 中就有了一个更长的的 play 列表。code
假如你但愿在多个 play 或者多个 playbook 中重用同一个 task 列表,你能够使用 include files 作到这一点。 当咱们但愿为系统定义一个角色时,使用 include 去包含 task 列表是一种很好用的方法。须要记住的是,一个 play 所要达成 的目标是将一组系统映射为多个角色。it
先看目录层级关系:io
tree ./nginx ./nginx ├── hosts # 主机清单inventory文件 ├── roles # roles角色目录 │ └── nginx │ └── tasks # nginx角色的tasks │ └── main.yml # nginx角色要执行的tasks的yaml文件 └── site.yml # 这个playbook的主入口
分别查看每个文件的内容:配置
nginx/hosts文件:
file
[nginx] 172.16.1.10
nginx/site.yml文件:
service
--- - hosts: all gather_facts: no roles: - nginx
nginx/roles/nginx/tasks/main.yml文件:
语法
--- - name: Install Nginx yum: name=nginx state=present - name: Start Nginx Service service: name=nginx state=started
ansible-playbook -i hosts site.yml --syntax-check playbook: site.yml
ansible-playbook -i hosts site.yml PLAY [all] *************************************************************************************************************************************** TASK [nginx : Install Nginx] ********************************************************************************************************************* ok: [172.16.1.10] TASK [nginx : Start Nginx Service] *************************************************************************************************************** ok: [172.16.1.10] PLAY RECAP *************************************************************************************************************************************** 172.16.1.10 : ok=2 changed=0 unreachable=0 failed=0