У меня есть список словарей, и я хочу получить самый последний.
Просмотр документации jinja2 кажется, что я должен быть в состоянии сделать это:
- set_fact:
t:
- a: 1
b: 2
- a: 3
b: 1
- debug:
msg: "{{ t | max(attribute='a') }}"
Но это не удается с
смертельно: [localhost]: НЕ УДАЛЕНО! => {"msg": "Произошла непредвиденная ошибка типа шаблона ({{t | max (attribute = 'a')}}): max ()> получил неожиданный аргумент ключевого слова 'attribute'"}
Как лучше всего это сделать? Конечно, мой вариант использования сложнее, чем это маленькое демо. Мое мышление выглядит примерно так:
check_mode: no
set_fact:
tgs_info: "{{ tgs_info | default({}) | combine({ item: all_tg_info | to_json | from_json | json_query(query) | max(attribute='target_group_name') }) }}"
vars:
query: "target_groups[?contains(target_group_name, `{{ product }}`) == `true`] | [?ends_with(target_group_name, `{{ tg_suffix }}{{ item }}`) == `true`]"
loop: "{{ projects | selectattr('protocol', 'match', '^HTTP$') | map(attribute='port') | list }}"
Идея состоит в том, что all_tg_info
содержит все автоматическое масштабирование моего aws аккаунта. Я отфильтрую их и хочу получить последнюю версию на основе имени или любого другого параметра. Я застрял здесь.