Большое спасибо за помощь, Мэтью!
Я решил, что факты и т. Д. Слишком уродливы, поэтому решил просто быстро создать плагин для фильтра ... Или, что еще важнее, добавить в mathstuff.py файл.
Добавление:
def duplicate(a):
if isinstance(a, collections.Hashable):
c = set(a)
else:
s = {}
c = []
for x in a:
if x not in s:
s[x] = 1
else:
if s[x] == 1:
c.append(x)
s[x] += 1
return c
В основной части документа и добавление:
'duplicate': duplicate,
В к:
class FilterModule(object):
''' Ansible math jinja2 filters '''
def filters(self):
filters = {
Итак, Jinja2
знает о фильтре.
Я собираюсь сделать запрос на извлечение информации, когда у меня будет время, но если кто-нибудь найдет его в это время, или если вы не хотите / не можете обновить Ansible, то следующее прекрасно работает:
- debug:
msg: '{{ my_dict | dict2items | map(attribute="value.redis.port") | list | duplicate }}'
Возвращает:
['1234']
Я провел несколько тестов с гораздо большими выборками, и он работает как задумано.
НАСЛАЖДАЙТЕСЬ!