ошибки ANSIBLE JEMSPATH при описании паразитных фактов - PullRequest
0 голосов
/ 01 октября 2019

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

анонимный факт

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

запись playbook

  - 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 Ответ

0 голосов
/ 01 октября 2019

Можно использовать 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"
]


Примечания
...