Ansible: удаление пустых значений из списка и назначение его новому списку - PullRequest
1 голос
/ 04 марта 2020

У меня есть список, сгенерированный в ansible с использованием значений, собранных задачей. В этом списке есть пустые строки, поскольку некоторым ключам не присвоены значения. Итак, я пытаюсь добиться того, чтобы назначить этот список новому списку, но без этих пустых значений.

list1: [
   "a",
   "b",
   "",
   "7",
   ""
]

Я попробовал следующее, и, похоже, оно не работает:

set_fact:
  list2: "{{ list1 1 | rejectattr('') |list }}"

Кто-нибудь может указать мне, что я делаю неправильно, и предоставить решение моей проблемы? ?

Ansible version: 2.9.1

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Просто используйте выберите фильтр. Цитата:

"Если тест не указан, каждый объект будет оцениваться как логическое значение."

    - set_fact:
        list2: "{{ list1|select()|list }}"
    - debug:
        var: list2

дать

    "list2": [
        "a", 
        "b", 
        "7"
    ]


Тот же результат может быть достигнут путем отклонения пустых строк. Например
    - set_fact:
        list2: "{{ list1|reject('match', '^$')|list }}"
0 голосов
/ 04 марта 2020

Пожалуйста, попробуйте, как показано ниже

  vars:
   list1: [ "a", "b", "", "7", "" ]
   list2:  []

  tasks:
  - name: test
    set_fact:
     list2: "{{list2  + [item]}}"
    when: item != ""
    with_items:
     - "{{list1}}"

Вывод

ok: [localhost] => {
    "msg": [
        "a",
        "b",
        "7"
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...