ansible - Ansible 遍历数组并使用过滤器
问题描述
我对 ansible 在以下情况下寻求帮助有点陌生。我正在尝试做的是遍历数组'access_key_ids'并运行 regex_search 过滤器。对于 regex_search 过滤器参数是'item',它是来自 with_items 的变量。它不以这种方式工作,下面是我正在尝试的。
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
它将 event_response_access_key_ids 设为空。但是当我硬编码一个值而不是“项目”时,它可以工作
谢谢。
解决方案
我一直在测试这个解决方案:
---
- 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"
}
推荐阅读
- android - 标签栏视图问题
- json - 如何知道一个值是否是json中某个键的值?循环遍历所有键并进行比较
- reactjs - Material UI v5 基于模式(亮/暗)的不同原色
- electron - 使用 qtile wm 在基于电子和 chrome 的应用程序中的文本大小和视觉上阅读文本的问题
- python - Plotly.js 没有读取我在 Plotly.py 中创建的情节的 JSON
- ios - 使用按钮保存 TableView 单元格数据(包含段控制器)
- amazon-web-services - Terraform 变量默认值和嵌套值的描述
- javascript - 过滤器未返回新数组
- java - 警告:HHH000342:无法获得查询元数据的连接:通信链路故障
- c++ - 如何在地图中使用 insert_or_assign 进行自定义类?