2017-10-20 233 views
-1

我最近開始使用python/YAML和JINJA(沒有軟件經驗),因爲我想使用Ansible自動化一些任務。訪問列表列表中的元素

YAML表示法就是這樣,據我瞭解,這是一個包含其他列表的列表,其中包含其他一些列表。

YAML文件

VARIABLE_NAME: 
    - LIST_1.1: 
    - VALUE1 
    - VALUE2 

    - LIST_1.2: 
    - VALUE3 
    - VALUE4 

如果我的理解是正確的,這代表了以下內容:

VARIABLE_NAME=[LIST1.1[VALUE1, VALUE2],LIST1.2[VALUE3, VALUE4]] 

在JINJA模板,我想循環和獲取列表1個VALUES使用的第一條語句和第二條語句的list2值。事情是這樣的:

JINJA模板

{%for values in List1.List_1.1%} 
Statement1 {values} 
{% endfor%} 

{%for values in List1.List_1.2%} 
Statement2 {values} 
{% endfor%} 

什麼會在這個JINJA模板正確的語法來訪問YAML的價值觀?另外,有沒有更好的方法來做到這一點? 感謝您的幫助。

回答

0

你可以試試這個在您的模板:

{%for values in LIST1['LIST_1.1']%} 
Statement1 {{values}} 
{% endfor%} 

{%for values in LIST1['LIST_1.2']%} 
Statement2 {{values}} 
{% endfor%} 

會給你這樣的結果:

Statement1 VALUE1 
Statement1 VALUE2 

Statement2 VALUE3 
Statement2 VALUE4 

希望這可以幫助你。

+0

嗨,Arbab,謝謝你的回答。我剛編輯我的問題,因爲它沒有反映我的實際問題。我已經確認你的解決方案適用於前一種情況,但對於這種情況我仍然無法訪問嵌套列表中的值。 在JINJA模板我想以下幾點:
'{%用於IP在VARIABLE_NAME [RANGES] [IP]%}'
「語句1 {{IP}}'
'{%ENDFOR%}'
但是我仍然在Ansible中找回以下錯誤:''AnsibleUndefinedVariable:list object has no element undefined「' –