剛開始學習運用 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