2016-05-12 106 views
6

我想有一個主要的劇本,其中包括其他劇本。是否可以將變量傳遞給包含playbook的變量?將變量傳遞給包含的playbook?

正常的語法,用於傳遞變量包括任務不工作(見下文)

- include: someplaybook.yml variable=value 

- include: someplaybook.yml 
    vars: 
    variable: value 

我跑v2.0.2.0。

+0

你知道角色嗎?這是什麼正常的語法不起作用? – Nasr

+1

就我所知,變量在整個Playbook的運行時間範圍內是全局的,所以你只需要在任意點定義變量 – ydaetskcoR

+0

@Nasr是的我知道角色 - 他們在這種情況下不會幫助。我添加了正常的語法。 Ansible對不同類型的變量有不同的範圍。簡單地使用set_facts不起作用。 – CamHart

回答

0

我發現唯一缺少的是引號。

- include: someplaybook.yml variable='value' 

它適用於我,也應該爲你工作。如果不分享你面對的錯誤。

確保您在角色的任務中定義了此變量「變量」,並且從這裏您只是將該值傳遞給該變量。

+3

這適用於任務包括 - 不包括手冊。 – CamHart

+0

在上面的命令中我已經包含了playbook。什麼意思的任務包括?你可以請分享代碼使用這個變量,這樣我可以得到更多的信息,你想如何使用它? –

+2

Playbook包括包括您要包含的文件在內的播放內容,即它們指定要在這些主機上運行的「主機」機器和角色/任務。任務包括只指定要運行的任務。 – CamHart

0

另外,我建議你閱讀這一點, http://docs.ansible.com/ansible/latest/playbooks_reuse.html ,並嘗試在這種情況下使用的角色,這將有助於在這樣的情況下,如果你想包括一個主劇本/導入多個劇本。 關於將值傳遞給include語句,您可以將其添加到角色的變量main.yml中。 或者,如果要傳遞的變量是單個主劇本中前一個任務的結果,請使用'register'並將輸出保存爲變量。

- debug: msg="{{result.stdout_lines}}"

這裏,結果是註冊變量。 使用調試模塊準確知道你想傳遞給劇本的內容。 希望這有助於。

+1

當我問這個問題時,我不記得確切的上下文,但是如果你閱讀關於原始問題的評論,我很清楚,角色不能用來解決這個問題。我已經在使用角色 - 這與角色能夠處理的情況略有不同。我忘記了確切的細節。 – CamHart