Ошибки ansible JEMSPATH при паразите

Я пытаюсь отфильтровать все строки, содержащие "RegButton-" из приведенных ниже анонимных фактов, и использовать вывод в качестве списка элементов в следующей игре. пытается использовать фильтр json_query, но он не работает с ошибкой ниже

возможный факт

{
    "ansible_facts": {
        "srcgrpname": [
            "RegButton-48773",
            "test_vio",
            "RegButton-23395",
            "RegButton-520859",
            "RegButton-743141",
            "RegButton-297578",
            "RegButton-186156"
        ]
    },
    "changed": false
}

запись в учебнике

  - name: "Filter Regbutton policy Names"
    set_fact:
      srcgrpname2: "{{ resultid1 | json_query(query) }}"
    vars:
        query: "ansible_facts.srcgrpname[?contains(@, 'RegButton-') == `true`]"

Ошибка, которую я получаю.

{
    "msg": "JMESPathError in json_query filter plugin:\nIn function contains(), invalid type for value: RegButton-48773, expected one of: ['array', 'string'], received: \"unknown\"",
    "_ansible_no_log": false
} 

1 ответ

Решение

Можно использовать select и regex. Например, задачи ниже

- set_fact:
    srcgrpname2: "{{ ansible_facts.srcgrpname|
                     select('regex', '^RegButton-(.*)$')|
                     list }}"
- debug:
    var: srcgrpname2

дайте

"srcgrpname2": [
    "RegButton-48773", 
    "RegButton-23395", 
    "RegButton-520859", 
    "RegButton-743141", 
    "RegButton-297578", 
    "RegButton-186156"
]


Заметки

Другие вопросы по тегам