2017-03-06 71 views
0

我在內的一些vars_promt一個劇本訪問播放變量編程

vars_prompt: 
    - name: domain_username 
    prompt: "Domain username? (firstname.lastname)" 
    private: no 
    - name: domain_password 
    prompt: "Domain password?" 
    private: yes 
    - name: pref_editor 
    prompt: "[A]tom or [V]isual Studio Code?" 
    private: no 

現在我想以編程方式訪問這些變量,像

hostvars[inventory_hostname][variable] 

其中variable將如domain_username

但是,來自vars_prompt的變量未包括在hostvars中,並且查看文檔時我找不到哪個變量包含該範圍。

回答

1

vars_prompt變量在Play範圍內。他們是平等在當前播放的所有主機,並可以通過名字引用:

- debug: var=domain_username 

hostvars持有主機的事實。

- set_fact: 
    domain_username_fact: "{{ domain_username }}" 

所以它成爲主機的事實,可作爲hostvars['some host'].domain_username_fact:如果你需要訪問後播放您提示增值經銷商,你可以像設置的事實。

+0

感謝您的回答,但這是比我需要的更多的解決方法 – Mene

0

雖然我還沒有發現任何文件,我沒有找到這個snipped

相關部分是這樣的:

Module Variables ("vars"): 
-------------------------------- 
{{ vars | to_nice_json }} 

因此,而不是訪問變量爲hostvars[inventory_hostname][variable],我可以訪問它vars[variable]

+0

您確定這是您需要的嗎? '變量[變量]'是一個黑客,並且以這種方式訪問​​的變量不是模板化的。訪問'vars [variable]'而不是'variable'是什麼原因? –

+0

原因是變量包含變量的名稱而不是內容,並且在我寫的角色中名稱是動態的,因爲我想在主機上保存變量(類似於facts.d) – Mene

+0

您能否詳細說明'變量'是黑客?我只是找不到任何文件。 – Mene