2017-10-20 236 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“' –