Как предотвратить случайную сортировку моего конфига Ansible / Jinja2 - PullRequest
0 голосов
/ 03 марта 2020

I my Ansible config У меня есть настройки, аналогичные

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 et c, но, как выясняется, Ansible или Jinja2 выполнит некоторую случайную сортировку, если элементы.

Как отобразить файл шаблона в порядке файла конфигурации? Без случайной сортировки?

Можно ли отсортировать, например, var1 значение? Как?

1 Ответ

0 голосов
/ 03 марта 2020

В зависимости от версии Python (Ansible записано в Python) ключи словаря сортируются или нет. Таким образом, вы не можете зависеть от порядка ключей, вместо этого вам просто нужно создать список (который упорядочен по дизайну):

my_config:
- name: item1
  var1: something
  var2: somethingelse
- name: item2
  var1: something
  var2: somethingels
- name: item3
  var1: something
  var2: somethingelse

А затем в Jinja:

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