дикт на каждом энве формата
app:
service1:
ver0.1:
ver0.2:
service2:
ver01:
ver02:
Хочу получить лист формата
env-service1-ver0.1
env-service1-ver0.2
но как не кручу получается два отдельных вывода:
msg: env-service1-ver0.1
msg: env-service1-ver0.2
пробовал и with_items и with_dict
debug:
msg: "{{env}}-service1-{{ item }}"
with_items: "{{ app.service.keys() |list }}"
Как вариант - сработать через lookup('template). Или напрямую писать в формате jinja2 когда определяете переменную. with_items всегда будет разбивать на несколько, так как такова его логика работы (выполнить таск несколько раз с каждым из элементов)
Если по всему словарю, то: - set_fact: result: '{{ result|default([]) }} + {{ app[item] | dict2items | map(attribute="key") | map("regex_replace", "^", "env-"~item~"-") | list }}' loop: '{{ app | dict2items | map(attribute="key") | list }}' Возможно, есть варианты проще, вроде использования json_query На мой взгляд, проще переделать структуру данных, чтобы их было удобнее использовать в ансибле.
а каким образом переделать?
Если вам нужен список, то лучше хранить данные в списке :)
Обсуждают сегодня