我的問題可能不夠完整。 這裏就是我真正想要做的事:Ansible - 以編程方式訪問變量的角色變量
我有一個包含有關這些密鑰庫比一些其他角色可能需要使用密鑰庫/密碼信息的作用。
的目錄結構如下所示:
/roles/
keystore/
tasks/
main.yml
vars/
main.yml
vault.yml
app1/
defaults/
main.yml
meta/
main.yml
templates/
app1.properties
tasks/
main.yml
在密鑰庫/ tasks.main.yml
,我有個任務,包括從庫文件中的增值經銷商:
- name: "Include vault variables"
include_vars: "vault.yml"
在密鑰庫
/VARS/main.yml,我有這樣的:
keystore_1:
path: /path.to.the.keystore_1
password: "{{ vault.keystore_1_password }}"
keystore_2:
path: /path.to.the.keystore_2
password: "{{ vault.keystore_2_password }}"
在密鑰庫/乏/ vault.yml,我(加密)該:
vault:
keystore_1_password: password1
keystore_2_password: password2
在APP1 /間/ main.yml,我參考作爲依賴密鑰庫作用:
dependencies:
- { role: keystore }
在APP1 /默認/ main.yml,我有,在可變,名稱我想用,默認情況下,這個應用程序的密鑰存儲的(我希望能夠這取決於環境變化):
keystore_to_use: keystore_2
在APP1 /模板/ app1.properties我希望能夠到獲取指定密鑰的正確路徑和密碼撕毀。
keystore.path= {{ vars[keystore_to_use].path }}
keystore.password= {{ vars[keystore_to_use].password }}
這工作正常的路徑,但不輸入密碼,我得到的代替密碼本:
{{ vault.keystore_2_password }}
- 原題:
我無法訪問角色變量以可信的方式編程。 這是我想要做的。
我有一個包含一些像這樣的瓦爾/ main.yml文件:
test_variable: "{{test1.var1}}"
test1:
var1: "{{finalVariable}}"
finalVariable: finally
在我的模板,我想使用類似vars['test_variable']
和我期待收到finally
。 取而代之,我收到{{test1.var}}
任何想法我應該如何處理?
你從哪裏收到這條信息?在模板裏面? 您確定要使用角色變量嗎?您可能需要默認變量(defaults/main.yml)。這些變量在稍後評估,替代似乎更好。 – Petro026
我在模板中收到此內容。我調整了我的問題來解釋我實際想要達到的目標。 – maximede
當密鑰庫角色變量被分析和模板化時,不會加載庫變量。在這種情況下,最終會出現兩層不可用的可變jinja模板。 – Petro026