如何防止Ansible/Jinja2对我的配置进行随机排序

如何防止Ansible/Jinja2对我的配置进行随机排序,ansible,jinja2,Ansible,Jinja2,我有我的Ansible配置我有类似的设置 my_config: item1: var1: something var2: somethingelse item2: var1: something var2: somethingelse item2: var1: something var2: somethingelse {% for itm in my_config %} var1: {{ my_config[itm]['var1

我有我的Ansible配置我有类似的设置

my_config:
  item1:
    var1: something
    var2: somethingelse
  item2:
    var1: something
    var2: somethingelse
  item2:
    var1: something
    var2: somethingelse
{% for itm in my_config %}
  var1: {{ my_config[itm]['var1']}}
{% endfo %}
在模板文件中,我有一些类似于

my_config:
  item1:
    var1: something
    var2: somethingelse
  item2:
    var1: something
    var2: somethingelse
  item2:
    var1: something
    var2: somethingelse
{% for itm in my_config %}
  var1: {{ my_config[itm]['var1']}}
{% endfo %}
现在我注意到Ansible或Jinja2并没有保留我“物品”的顺序。我希望
item1
出现在
item2
之前,但事实证明,Ansible或Jinja2会对项目执行一些随机排序

如何按照配置文件的顺序呈现模板文件?没有随机排序


是否可以按例如
var1
value进行排序?如何排序?

根据Python的版本(Ansible是用Python编写的),字典键是否排序。因此,您不能依赖于键的顺序,而只需要创建一个列表(按设计顺序排列):

然后在金贾:

{% for item in my_config %}
  var1: {{ item['var1'] }}
{% endfor %}