在 Ansible 中,如何使用键变量更改现有字典/哈希值

2023-11-28

正如标题所示,我想根据此问题的答案循环遍历现有字典并更改一些值question我想出了下面的代码,但它不起作用,因为第二次调试调用中的值没有变化,我想这是因为在另一个问题中他们正在从头开始创建一个新字典,但我也尝试过它没有外部大括号,我原以为这会导致它改变现有值。

- set_fact:
  uber_dict:
    a_dict:
      some_key: "abc"
      another_key: "def"
    b_dict:
      some_key: "123"
      another_key: "456"

- debug: var="uber_dict"

- set_fact: "{ uber_dict['{{ item }}']['some_key'] : 'xyz' }"
  with_items: "{{ uber_dict }}"

- debug: var="uber_dict"

你不能change现有变量,但您可以使用相同名称注册新变量。

检查这个例子:

---
- hosts: localhost
  gather_facts: no
  vars:
    uber_dict:
      a_dict:
        some_key: "abc"
        another_key: "def"
      b_dict:
        some_key: "123"
        another_key: "456"
  tasks:
    - set_fact:
        uber_dict: "{{ uber_dict | combine(new_item, recursive=true) }}"
      vars:
        new_item: "{ '{{ item.key }}': { 'some_key': 'some_value' } }"
      with_dict: "{{ uber_dict }}"
    - debug:
        msg: "{{ uber_dict }}"

Result:

ok: [localhost] => {
    "msg": {
        "a_dict": {
            "another_key": "def",
            "some_key": "some_value"
        },
        "b_dict": {
            "another_key": "456",
            "some_key": "some_value"
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Ansible 中,如何使用键变量更改现有字典/哈希值 的相关文章

  • 如何根据任务或任务集切换用户?

    我的 ansible 手册中反复出现的主题是我经常必须使用 sudo 权限执行命令 sudo yes 因为我想为某个用户执行此操作 理想情况下 我宁愿使用 sudo 切换到该用户并正常执行命令 因为这样我就不必执行通常的后命令清理工作 例如
  • Ansible:全局模板文件夹?

    谷歌搜索找不到任何东西 有group vars 全部 对于变量 有类似的模板吗 我想在多个角色中使用一些模板 您可以将全局模板放入templatesAnsible 布局顶层目录 与group vars 顺便说一句 全局文件也是如此 file
  • 使用嵌套 delegate_to 将文件从一台远程服务器复制到另一台远程服务器

    作为用户 我想将文件从节点1复制到节点2 是否可以使用复制模块 delegate to 以下是我试图做的事情 Playbook 从节点 3 运行 Playbook Sample name Gather Facts for all hosts
  • 如何从 Ansible 中的指定组中删除用户?

    我们假设user01定义了两个组 groupA and groupB 除了主要组之外 我可以将帐户添加到groupC 确保user01属于groupC using user name user01 groups groupC append
  • 带有 cacert 选项的 Ansible URI 模块

    我正在尝试做相当于 curl X POST data
  • 如果不满足某些条件,如何跳过ansible剧本中的所有其他剧本?

    我在下面的剧本中有多个剧本 如果不满足某些条件 我想忽略所有其他戏剧 因此 对于下面的示例 如果我在中找不到任何新文件Play1然后我不想执行Play2 and Play3根本没有 它应该跳过它 我怎样才能做到这一点 I have end
  • ansible安装node.js版本6

    要安装 Node 6 x 版本 请执行以下命令 curl sL https deb nodesource com setup 6 x sudo E bash sudo apt get install y nodejs 现在我到底该如何在an
  • 奇怪的 bash 脚本行为 - 生成的命令在复制粘贴时有效,但在脚本中无效

    出于安全原因 我编写了一个简短的 bash 脚本来包装 ansible playbook 命令 这并不复杂 而且大部分脚本在这里都是无关紧要的 最后 我将脚本参数生成的变量中的 ansible 命令放在一起 如下所示 ansible pla
  • Ansible 权限问题

    我正在尝试将当前用户添加到系统中的某个组 然后执行需要该组权限的命令 我的剧本是这样的 name Add this user to RVM group sudo true user state present name vagrant ap
  • 创建一个能够从容器注册表中提取的 Docker 就绪计算引擎

    我们使用 terraform 设置 GCE 实例 然后使用 ansible playbooks 来配置它们并将我们的服务转移到机器上 我正在我们的组织中运行一个项目 该项目需要从另一个项目中提取 Docker 映像 这些图像托管在另一个项目
  • 使用 Ansible 配置 EC2 实例时遇到问题

    我对如何使用 Ansible 启动 EC2 实例感到非常困惑 我正在尝试使用 ec2 py 库存脚本 我不确定应该使用哪一个 因为 Ansible 安装了三个 ansible lib ansible module utils ec2 py
  • 如何配置 Ansible 跳过两个堡垒主机?

    我想编写一个 Ansible 剧本 使用 Ansible 2 7 5 它将在到达目标服务器之前跳过两个主机来执行诸如安装 docker 和 python 等操作 我能够让 Ansible 通过一台主机跳转到server1通过将其添加到我的h
  • ansible 用户模块总是显示已更改

    我正在努力正确使用 ansible 的用户模块 问题是每次我运行我的剧本时 我创建的用户always显示为已更改 即使我已经创建了它们 我在这里发现其他人也有同样的问题 https github com ansible ansible is
  • Ansible git clone“权限被拒绝”但直接 git clone 工作

    我在使用 Ansible 时遇到了一个令人不安的问题 我使用当前主机的 ssh 密钥在我的环境中设置 git 克隆 name Add user Public Key copy src Users alexgrs ssh id rsa pub
  • 在ansible中合并字典

    我目前正在构建一个使用 ansible 安装 PHP 的角色 并且在合并字典时遇到一些困难 我尝试了多种方法来做到这一点 但我无法让它像我想要的那样工作 A vars file my default values key value my
  • Ansible local_action 指令

    我对 Ansible 很陌生 有一个简单的问题来了解我的理解local action指示 这是否意味着该命令完全在本地执行 假设你有这样的东西 local action command which nginx register check
  • 使用 ansible 处理程序滚动重启

    我想运行一个 ansible playbook 它会安装一个服务 如果自上次运行以来发生任何更改 或多或少是 ansible 处理程序的规范用例 则重新启动它 但我想要一个不同的并行性用于安装而不是重新启动 我想一次在所有主机上安装 但是
  • 如何在 Jinja 中过滤字典?

    我有一个包字典 包名称是key和一些细节的字典是value php7 1 readline latest 7 1 9 1 ubuntu14 04 1 deb sury org 1 origins ppa launchpad net vers
  • 开发/生产中的 Ansible 服务器/组

    我所处的情况是看不到正确的使用方法 我有多个分配了不同角色的服务器 分布在多个组中 与生产 登台环境相比 我在本地 Vagrant 环境中遇到了一些使用 group vars 的困难 在生产中 有更多的服务器 分配的组更少 在我的 Vagr
  • Ansible:仅在存在时禁用服务

    有没有什么好的方法可以禁用和停止服务 但前提是它安装在服务器上 像这样的事情 service name item enabled no state stopped only if present yes with items avahi d

随机推荐

  • Maven 中的“反应堆”是什么?

    我一直在阅读有关 Maven Reactor 的内容 并对它的术语用法感到困惑 我读过 多模块是一个反应器 您可以操作 Maven 反应器 并且反应器是一个插件 反应堆到底是什么 反应器是 Maven 的一部分 允许它在一组模块上执行目标
  • iOS 8 自动单元格高度 - didSelectRowAtIndexPath 导致 UItableview 跳转到顶部

    我目前正在将应用程序更新到 iOS8 并替换我自己的像元高度计算 我有一个带有一堆自定义单元格的表格视图 每个单元格被选中时都会在导航控制器上呈现 推送一个新视图 当表格视图中填充了这些单元格 并且用户选择表格底部附近的一个单元格时 表格视
  • 是否可以使用 openURL 打开设置应用程序?

    我知道一个应用程序可以使用以下代码启动其他应用程序 UIApplication sharedApplication openURL appUrl 我知道打开 safari 和邮件的 URL 方案 但我做了一些搜索 但没有找到有关 setti
  • Shell 命令在 python 中失败,在 shell 中正常

    我有一个 python 脚本 可以根据给定的输入生成许多 shell 命令 问题是 当它尝试执行生成的命令时 它会失败 但是当我自己运行生成的命令 即从命令行 时 它们会成功执行 这是生成的命令 find home me downloade
  • Android SMS 拦截,无需通知图标或 WAP-PUSH 消息

    有没有办法拦截短信广播接收器例如here但不会向用户显示任何通知并立即删除包含例如某些关键字的消息 EDIT 我需要的是在android手机之间进行一对一的通信 我认为发送短信可以解决问题 但是不需要短信通知 也许WAP推送消息会更好 但我
  • 同步语句上出现 NullPointerException

    我尝试在下面的代码中同步一个对象 public void myMethod synchronized globalObj Do something here 该代码在一个线程中执行 问题是 另一个线程可能将 globalObj 设置为 nu
  • cmake 不会编译为 C++ 11 标准

    我是 C 新手 一直在编译 制作 链接 构建 其他方面苦苦挣扎 让我们看看是否有人可以帮助我 我做了一些搜索 发现其他人也有类似的问题 但我尝试了他们的解决方案 但没有成功 所以这里是 一个简单的 C 程序 使用 C 11 功能 例如统一初
  • Nhibernate 在使用 QueryOver 时无法解决属性异常,适用于 QueryAll

    我有以下问题基本上我有以下两个片段 var contactAssociation session QueryOver
  • 具有 ManyToOne 关联的实体上的 getArrayResult

    具有以下基本表 一对多关系 客户端 拥有许多用户 用户 每个用户属于单个客户端 在一个非常简单的示例中 如果我查询用户实体 Querybuilder 和getArrayResult 我看到以下内容 实际生成的SQL中包含要修改的外键字段 返
  • 有没有办法用javascript与IP建立tcp连接?

    让我介绍一下我想要完成的任务的背景 我有一个具有本地 IP 地址的设备 芯片和引脚终端 它已被编程为接收某些数据并处理它 示例 我发送字符串 05 in hex 30 35 终端会读取该内容并将重新启动 我尝试过使用SockJS客户端以及内
  • 哪些 Ruby 类支持 .clone?

    Ruby 定义 clone in Object 令我惊讶的是 有些类在调用它时会引发异常 我发现NilClass 真实课堂 假类 Fixnum有这种行为 1 是否存在完整的类列表 至少是核心类 这不允许 clone 或者有没有办法检测特定类
  • 从 Linux 使用 Windows DLL

    我们需要与第三方应用程序接口 但该应用程序背后的公司没有公开消息协议 仅提供 Windows DLL 进行接口 我们的应用程序基于 Linux 因此我无法直接与 DLL 通信 我找不到任何现有的解决方案 所以我正在考虑在 Linux 和 W
  • 有什么方法可以知道 Espresso 活动是否已开始?

    我正在使用 Espresso 进行活动转换测试 但我不知道这是否是最好的方法 public void testStartLogin onView withId R id register perform click onView withI
  • 如何将 Java 异常信息返回到 jQuery.ajax REST 调用?

    我有一些 jQuery 代码 可以对 Java 后端进行 REST 调用 后端函数的处理可能会遇到异常 将此信息返回到 Javascript 的最佳方法是什么 在测试中 我捕获了 Java 中的异常并将 HTTP 状态代码设置为 500 这
  • 无法转换为内部表示

    我正在使用 Broadleaf Commerce 应用程序Oracle Database and Tomcat 6 server 我按照以下步骤操作here我已经做出了改变Persistence admin xml application
  • 如何使用 Java 计算 Selenium WebDriver 中选择下拉框中的选项数量?

    我有选择下拉列表 xpath id ddlTablePay 我需要计算这个下拉列表中的选项数量 谢谢 Use getOptions 方法并将它们存储在一个列表中 然后找到它的大小 Select se new Select driver fi
  • 测试期间未遵循设置的默认语言

    使用Django 1 3 Python 2 6 有一个特别奇怪的问题需要追踪 国际化 以及用于测试的 RequestFactory 与 TestClient 意见 如果我运行 manage py test 所有测试都会运行 包括有问题的测试
  • 无需应用程序商店即可分发 iPad 应用程序

    假设以下场景 A公司要求B公司为他们制作一个iPad App A 公司只想在数量非常有限的 iPad 少于 100 台 上为自己使用 A 公司不一定有兴趣在应用商店上提供它 B 公司如何将应用程序分发 出售 给 A 公司 它可以通过临时配置
  • Meteor 无法启动 - Fibers/futures.js 抛出错误“错误:SQLITE_CORRUPT:数据库磁盘映像格式错误”

    现在 在本地运行时 OSX 中 Meteor CLI 的每个操作都会引发此异常 Users mallorym meteor packages meteor tool 1 1 3 1d614zp os osx x86 64 web brows
  • 在 Ansible 中,如何使用键变量更改现有字典/哈希值

    正如标题所示 我想根据此问题的答案循环遍历现有字典并更改一些值question我想出了下面的代码 但它不起作用 因为第二次调试调用中的值没有变化 我想这是因为在另一个问题中他们正在从头开始创建一个新字典 但我也尝试过它没有外部大括号 我原以