gpt4 book ai didi

loops - 在 Ansible 中使用 with_dict 循环遍历注册变量

转载 作者:行者123 更新时间:2023-12-01 08:58:29 24 4
gpt4 key购买 nike

如何引用一个注册值的字典元素。

我的 Ansible 剧本如下所示:

- command: echo {{ item }}
with_dict:
- foo
- bar
- baz
register: echos

注册变量“echos”将是一个字典:

 {

"changed": true,
"msg": "All items completed",
"results": [
{
"changed": true,
"cmd": [
"echo",
"foo"
],
"delta": "0:00:00.002780",
"end": "2014-06-08 16:57:52.843478",
"invocation": {
"module_args": "echo foo",
"module_name": "command"
},
"item": "foo",
"rc": 0,
"start": "2014-06-08 16:57:52.840698",
"stderr": "",
"stdout": "foo"
},
{
"changed": true,
"cmd": [
"echo",
"bar"
],
"delta": "0:00:00.002736",
"end": "2014-06-08 16:57:52.911243",
"invocation": {
"module_args": "echo bar",
"module_name": "command"
},
"item": "bar",
"rc": 0,
"start": "2014-06-08 16:57:52.908507",
"stderr": "",
"stdout": "bar"
},
{
"changed": true,
"cmd": [
"echo",
"baz"
],
"delta": "0:00:00.003050",
"end": "2014-06-08 16:57:52.979928",
"invocation": {
"module_args": "echo baz",
"module_name": "command"
},
"item": "baz",
"rc": 0,
"start": "2014-06-08 16:57:52.976878",
"stderr": "",
"stdout": "baz"
}
]

现在,如果我想引用 echos 字典的“foo”字典元素的“已更改”字段,我该怎么做??

最佳答案

首先,您的示例存在缺陷:with_dict 无法遍历列表。

但一般做法如下:

---
- hosts: localhost
gather_facts: no
tasks:
- command: echo {{ item }}
with_items:
- foo
- bar
- baz
register: echos

# Iterate all results
- debug: msg='name {{ item.item }}, changed {{ item.changed }}'
with_items: '{{ echos.results }}'

# Select 'changed' attribute from 'foo' element
- debug: msg='foo changed? {{ echos.results | selectattr("item","equalto","foo") | map(attribute="changed") | first }}'

关于loops - 在 Ansible 中使用 with_dict 循环遍历注册变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39174539/

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