1. 程式人生 > >ansible 變量傳遞到include

ansible 變量傳遞到include

imm 制作 介紹 什麽 底部 ansible ansi handler apach

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