ansible 變量傳遞到include
Task Include Files And Encouraging Reuse
假設您想在play或playbook中重復使用任務列表。 您可以使用include文件來執行此操作。 使用include的任務列表是定義系統將要實現的角色的好方法。 請記住,playbook中play的目標是將一組系統映射到多個角色。 讓我們看看這是什麽樣子
一個task include 文件只包含一個平面的任務列表,如下所示:
---
# possibly saved as tasks/foo.yml
- name: placeholder foo
command: /bin/foo
- name: placeholder bar
command: /bin/bar
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
ansible 變量傳遞到include