Task Include Files And Encouraging Reuseapache
假設您想在play或playbook中重複使用任務列表。 您能夠使用include文件來執行此操做。 使用include的任務列表是定義系統將要實現的角色的好方法。 請記住,playbook中play的目標是將一組系統映射到多個角色。 讓咱們看看這是什麼樣子ssh
一個task include 文件只包含一個平面的任務列表,以下所示:wordpress
---this
# possibly saved as tasks/foo.ymlrest
- name: placeholder foo部署
command: /bin/foo變量
- name: placeholder barfile
command: /bin/barservice
include指令看起來像這樣,而且能夠混合在一個playbook中的常規任務: tasks:語法
- include: tasks/foo.yml 您也能夠將變量傳遞給include。 咱們稱之爲「參數化include」。 例如,要部署到多個wordpress實例,我能夠將全部個人wordpress任務封裝在一個wordpress.yml文件中,並使用以下所示:
tasks: - include: wordpress.yml wp_user=timmy - include: wordpress.yml wp_user=alice - include: wordpress.yml wp_user=bob
從1.0開始,變量也能夠使用替代語法傳遞到包含文件,這也支持結構化變量: tasks:
- include: wordpress.yml vars: wp_user: timmy ssh_keys: - keys/one.txt - keys/two.txt
使用任何一種語法,而後能夠在包含的文件中使用傳入的變量。 咱們將在變量中介紹它們。 你能夠這樣引用它們:
{{ wp_user }} (除了明確傳遞的參數以外,vars部分中的全部變量也能夠在這裏使用。)
include也能夠在'handler'部分使用,例如,若是你想定義如何從新啓動apache,你對全部的Playbook只作一次。 你可能會製做一個看似以下的handlers.yml:
--- # this might be in a file like handlers/handlers.yml - name: restart apache service: name=apache state=restarted
而在你的main Playbook文件中,只要把它include進來,放到play的底部:
handlers: - include: handlers/handlers.yml