Ansible遍历数组并使用过滤器
我是ansible的新手,在下面的场景中寻求帮助。我要做的是迭代数组“access\u key\u ids”并运行regex\u搜索过滤器。对于regex_搜索筛选器,参数为'item',它是来自with_items的变量。它不能以这种方式工作,下面是我正在尝试的Ansible遍历数组并使用过滤器,ansible,yaml,jinja2,ansible-2.x,Ansible,Yaml,Jinja2,Ansible 2.x,我是ansible的新手,在下面的场景中寻求帮助。我要做的是迭代数组“access\u key\u ids”并运行regex\u搜索过滤器。对于regex_搜索筛选器,参数为'item',它是来自with_items的变量。它不能以这种方式工作,下面是我正在尝试的 name: Set Fatcs block: # extract access key ids from get event response - set_fact: event_response_
name: Set Fatcs
block:
# extract access key ids from get event response
- set_fact:
event_response_access_key_ids: "{{event_response_access_key_ids}} + [{{event_response.content | regex_search(item)}}]"
with_items: "{{access_key_ids}}"
# check if the response contains access key id for the license
- set_fact:
scwx_output: "{{ (event_response_access_key_ids | length > 0 ) | ternary(event_response, 'License Key does not match with available sensors')}}"
when: event_response.json is undefined
它将事件\响应\访问\密钥\ ID设置为空。但是当我硬编码一个值而不是“item”时,它就工作了
谢谢。我一直在测试这个解决方案:
---
- name: Test
hosts: local
gather_facts: False
vars:
event_response:
content: "hi1"
access_key_ids:
- "1"
- "h"
- "3"
tasks:
- name: Fact
set_fact:
event_response_access_key_ids: "{{ event_response_access_key_ids|default([]) + [ event_response.content | regex_search( item ) ] }}"
with_items: "{{ access_key_ids }}"
它可以正确地获取变量:
ok: [localhost] => (item=1) => {
"ansible_facts": {
"event_response_access_key_ids": [
"1"
]
},
"changed": false,
"item": "1"
}
ok: [localhost] => (item=h) => {
"ansible_facts": {
"event_response_access_key_ids": [
"1",
"h"
]
},
"changed": false,
"item": "h"
}
ok: [localhost] => (item=3) => {
"ansible_facts": {
"event_response_access_key_ids": [
"1",
"h",
null
]
},
"changed": false,
"item": "3"
}