у нас есть динамические имена групп в нашем файле инвентаря, которые основаны на соглашении об именах.Для этих целей я хотел бы получить доступ к узлам этих узлов, чтобы перебрать все из них, чтобы создать из них строку (например, через запятую).
Например:
[misbe_test_a]
host1
host2
[misbe_test_b]
host2
host3
host4
Переменная будет словарём, который содержит для каждого элемента список:
"misbe_test_a": [
"host1",
"host2"
],
"misbe_test_b": [
"host2",
"host3",
"host4"
]
Что, конечно, работает для одной конкретной группы:
{% for host in (groups["misbe_test_a"] | unique) %}{{ host }}{% endfor %}
Однако мне нужно получить доступ ко всемиз групп, не зная, что следует за misbe_.Это решение, конечно, не сработает:
{% for host in (groups["misbe_*"] | unique) %}{{ host }}{% endfor %}
Есть идеи, как я могу решить это одним вкладышем?То, что я хотел бы пропустить, это следующее (кроме того, это добавило бы host2 дважды в мою строку> как в разных группах):
{% for group_name in (groups | select('match','misbe.*') | list | unique) %}
{% for host in groups[group_name] %}
{{ host }}
{% endfor %}
{% endfor %}"
EDIT
ЧтоЧто касается использования json_query для этого, есть ли возможность запросить ключ словаря и затем получить доступ к элементам списка?
Этот будет работать для одной группы:
{{ groups | json_query('misbe_test_a') | list | join(',') }}
К сожалениюЯ не знаю, как выбрать, что они вводят в словарь с функциями JSME (например, начинается с или содержит http://jmespath.org/specification.html#functions).