Ansible: как фильтровать с помощью переменной - PullRequest
1 голос
/ 03 февраля 2020

У меня есть ansible - playbook, который выдает список строк в debug выводе. Я могу отфильтровать OUTPUT отладки с помощью string (exp: CUST), но я пытаюсь отфильтровать список с помощью переменной.

- debug:
    msg: "{{ List.msg | select('match', '^(CUST)[0-9]+') | list }}"

List msg output:

CUST1
CUST2
NEW1
NEW2

из вышеупомянутой команды отладки я получаю CUST1, CUST2 в отфильтрованном выводе.

- set_fact:
    filter: "{{ fileout.results[0].content }}"

выше filter генерирует «CUST», и я хочу использовать эту переменную filter в вышеупомянутой команде отладки.

используя приведенный ниже синтаксис, я ничего не получаю, может быть, ansible НЕ принимает его в качестве соответствующей переменной.

- debug:
    msg: "{{ List.msg | select('match', '^("{{ filter }}")[0-9]+') | list }}"

Пожалуйста, помогите.

заранее спасибо.

1 Ответ

0 голосов
/ 03 февраля 2020

Можно выделить объявление регулярного выражения filter и упростить цитату. Например

  vars:
    List:
      msg: ['CUST1','CUST2','NEW1','NEW2']
    Patterns: ['CUST','NEW']

  tasks:
    - debug:
        msg: "{{ List.msg | select('match', filter) | list }}"
      vars:
        filter: '^{{ item }}[0-9]+'
      loop: "{{ Patterns }}"

дает

    "msg": [
        "CUST1", 
        "CUST2"
    ]

    "msg": [
        "NEW1", 
        "NEW2"
    ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...