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

2023-12-12

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

我的 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"
    }
]

}

现在,如果我想引用 echoes 字典的“foo”字典元素的“change”字段,我该怎么做?


首先,你的例子是有缺陷的: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 }}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ansible 中使用 with_dict 循环遍历注册变量 的相关文章

随机推荐

  • C++ 委托构造函数

    你好 我对 Java 比 C 更熟悉 test h class Test private int a b c public Test int a int b int c test c Test Test int a int b int c
  • 如何使用 FTP 下载 R 包

    我需要在无法访问 Internet 的 Windows 7 PC 上支持 R 环境 我想下载 最终下载到 DVD 所有 5 000 个软件包的当前版本 以供这台 PC 上的 R 用户使用 是否有 FTP 脚本或其他好方法来下载 R 包的所有
  • 如何每500ms获取一次相机预览帧

    我正在开发示例应用程序 它通过 android 中的相机为我提供指向图像或对象的颜色代码 我的应用程序与此应用程序类似 我正在使用this为此的应用程序代码 使用此应用程序代码 我可以连续获取相机预览帧 并为我提供当前预览帧的颜色代码 我想
  • NotificationHub推送通知返回:从Token Provider获取的Token错误

    我有 Wp8 1 Silverlight 应用程序 它从 Mobileservice 旧的 azure 服务 接收推送通知 WNS 因此 由于新功能 我想更新到新服务 我现在已经创建 升级了一个新服务器以使用应用程序服务 移动应用程序 并使
  • 使用 Grand Central Dispatch,我如何检查是否有一个块已经在运行?

    我正在使用 GCD 从互联网上进行一些后台加载 除了一点缺陷之外 这效果很好 在我的应用程序中 我有 3 个选项卡 当单击任何选项卡时 GCD 开始为相应的选项卡进行后台加载 如果用户决定从第一个选项卡转到第二个选项卡 当 GCD 已开始下
  • 为什么这个 Powershell ForEach 循环每次迭代都会变慢?

    我的代码按预期工作 我真的很想知道是否有人知道为什么我下面描述的事情可能会发生 也就是说 如果有人有任何进一步优化日常工作的想法 我会本着每天都是上学日的精神感激地接受他们 该脚本正在查询我们所有的域控制器以获取最新的最后登录特定 OU 中
  • 为什么 PHP 需要显式引用“$this”来调用成员函数?

    差不多就这样了 大多数面向对象编程语言中的作用域可以很好地解析符号 而无需显式引用当前实例 即 PHP 中的 this 为什么 PHP 要求我在每次调用同一个类中的成员函数之前都加上 this 来解析函数调用的范围 考虑 this gt s
  • 为什么数据未绑定到我的 WPF 应用程序中的标签

    我正在做一个简单的DataBinding应用在WPF 在这个应用程序中 无论我输入什么TextBox named txtName 应该出现在Label 为此 我使用了绑定WPF 但它没有受到约束
  • 带有几个小数位的倒计时,在 Swift 中使用 NSTimer

    例如 我想制作一个具有从 10 0000000 开始的计时器的应用程序 并且我希望它能够完美倒计时 到目前为止 这是我的代码 import UIKit class ViewController UIViewController IBOutl
  • 如何列出 Google 云端硬盘文件夹的所有文件、文件夹、子文件夹和子文件

    有什么想法如何在单个查询中查询所有子项和子项的子项吗 Update 这似乎是一个简单的问题 我怀疑是否有一个简单的解决方案 查询文件夹和文件树可能会消耗大量 API 调用 因此 为了解决我的问题 我使用单个查询来列出所有者的所有文件和文件夹
  • 获取 Discord.JS 机器人的正常运行时间

    我现在正在为运行时创建一个 Discord 机器人命令 我想知道运行时最紧凑 且仍然正确 的方法是什么 以捕获机器人实际在线的时间并以 24 小时格式返回 您无需在机器人启动时手动保存 您可以使用client uptime你会得到多少毫秒机
  • window.location 和 document.location 有什么区别?

    window location 和 document location 有什么区别 它们都应该引用同一个对象吗 根据 W3C 的说法 它们是相同的 实际上 为了跨浏览器安全 您应该使用window location而不是document l
  • 模型更改后角度视图不更新

    我有一个简单的角度应用程序 可以使用下面的 JavaScript Web 音频对象来播放音频 应用程序组件 ts export class AppComponent title media player audio currentTime
  • 在egrep的正则表达式中管道bash输入参数

    这是我尝试运行的脚本 bin bash charlist 1 possible input cat wordlength 2 possible input 3 cat nounlist egrep b charlist b wordleng
  • Java&Mongo:获取字段存在的对象

    情况 我有文档集合 每个文档都包含这样的字段 id ObjectId userId String 但它也可以是字段 files Object 当我这样做时 final Query query new Query query fields i
  • 在R中通过grepl合并两个数据帧

    假设我有两个数据框 df1 lt data frame x c abc def ghi NA y 1 4 df1 x y 1 abc 1 2 def 2 3 ghi 3 4 NA 4 df2 lt data frame x c a i z
  • 如何检查MySQL连接是否经过SSL加密?

    我正在使用 MySQL 官方网站的 MySQL NET 连接器 我正在尝试从我的 C 程序到 Mysql 数据库建立安全的 SSL 连接 Mysql 服务器允许使用 SSL 连接 have ssl变量设置为yes and ca cert s
  • Ubuntu:等待网络连接并执行 bash 命令

    在Ubuntu 最新的发行版很好 中 我想重新启动路由器 并在bash脚本中我想要一个命令来等待网络链接再次启动 当它检测到这一点时 它必须启动bash 命令 我可以通过某种轮询循环来实现这一点 但理想的解决方案是使用一个 bash 命令
  • C++:将十六进制转换为十进制

    I m looking for a way to convert hex hexadecimal to dec decimal easily I found an easy way to do this like int k 0x265 c
  • 在 Ansible 中使用 with_dict 循环遍历注册变量

    如何引用已注册值的字典元素 我的 Ansible 剧本如下所示 command echo item with dict foo bar baz register echos 注册变量 echos 将是一个字典 changed true ms