gpt4 book ai didi

json - Ansible 2.0 解析 Json 并存储在另一个变量中

转载 作者:行者123 更新时间:2023-12-04 19:01:30 24 4
gpt4 key购买 nike

我的任务是

  - name: task name
shell: some command --format json
register: result

输出将采用以下 json 格式
[
{
"mac_address": "x.x.x.x.x.x",
"fixed_ips": "{\"subnet_id\": \"s-s-s-s\",\"ip_address\": \"172.*.*.*\"}",
"id": "1",
"name": ""
},
{
"mac_address": "x.x.x.x",
"fixed_ips": "{\"subnet_id\": \"s-s-s-s\", \"ip_address\": \"192.*.*.*\"}",
"id": "2",
"name": ""
}
]

我想要做的是,只获取以 192 开头的 IP 地址并将其存储到一个变量中,以便我可以在另一个任务中使用它。

最佳答案

如果是字典列表,请使用 selectattr :

"{{ (result.stdout | from_json | selectattr('ip_address','match','^192') | list | fist).ip_address }}"

我假设你只需要一个元素,所以我使用 first从列表中获取单个元素。

由于输入数据的修改而更新了表达式:
- set_fact:
ip_address: "{{ ( result.stdout |
from_json |
map(attribute='fixed_ips') |
map('from_json') |
selectattr('ip_address','match','^192') |
list |
first
).ip_address }}"
fixed_ips是字符串,所以需要申请 from_jsonmap将每个项目转换为能够应用 selectattr筛选。

关于json - Ansible 2.0 解析 Json 并存储在另一个变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44136080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com