0

我正在尝试从以下 ansible 事实中过滤所有包含“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
} 
4

1 回答 1

0

可以使用selectregex。例如下面的任务

- 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"
]


笔记

于 2019-10-01T04:36:19.457 回答