У меня есть структура данных, как показано ниже в примере. Моя цель - получить список пользователей, которые принадлежат к группе group_1. И это то, что я умею (как в примере). Но дополнительно хочу избавиться от ...

0
krzyhon 14 Янв 2021 в 17:10

1 ответ

Лучший ответ

JMESPath подходит для простых вопросов, но сложно осмыслить сложные вещи, тем более что ваш главный вопрос включает выборочное создание нового "пользовательского" dict (или изменение переменной var, трудно сказать, какой результат вы хотите) . Если вы хотите изменить исходные данные, просто удалите | combine({}), который клонирует пользовательский dict.

    - name: Filter users by group name
      set_fact:
        filtered_users: >-
          {%- set results = [] -%}
          {%- for ur in users -%}
          {%-  set u = ur | combine({}) -%}
          {%-  set g1 = u.groups | selectattr("name", "eq", search_name) -%}
          {%-  if g1 | length > 0 -%}
          {%-    set _ = u.update({"groups": g1}) -%}
          {%-    set _ = results.append(u) -%}
          {%-   endif -%}
          {%- endfor -%}
          {{ results }}
1
mdaniel 14 Янв 2021 в 17:08