首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换set_fact中的值

替换set_fact中的值
EN

Stack Overflow用户
提问于 2021-08-02 03:07:51
回答 1查看 71关注 0票数 0

下面是我的样例yaml文件

代码语言:javascript
复制
student:
  faculty: "Information Technology"
  code: "FC1412"
  abraham:
    country: "UK"
    age: "56"
  aaron:
    country: "UK"
    age: "56"
  chin:
    country: "UK"
    age: "56"

下面是我的Ansible代码

代码语言:javascript
复制
- slurp:
    src: {{ yaml_file_directory }}
  register: registerValue

- debug:
    msg: {{ registerValue['content'] | b64decode | from_yaml }}

它将给出如下输出

代码语言:javascript
复制
student: {
  faculty: "Information Technology",
  code: "FC1412",
  abraham: {
    country: "UK",
    age: "56"
  },
  aaron:
    country: "UK",
    age: "56",
  },
  jamess: {
    country: "UK",
    age: "56"
  }
}

是否有可能替换像aaron这样的值,从56岁到57岁。我希望你们能给我一些建议

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-02 06:15:01

字典在Ansible中是不可变的。你必须改写整个字典。例如,将更新放入字典中

代码语言:javascript
复制
        update:
          aaron:
            age: "57"

并使用filter combine。设置recusive=True以保留所有属性

代码语言:javascript
复制
    - set_fact:
        student: "{{ student|combine(update, recursive=True) }}"
      vars:
        update:
          aaron:
            age: "57"

给出

代码语言:javascript
复制
  student:
    aaron:
      age: '57'
      country: UK
    abraham:
      age: '56'
      country: UK
    code: FC1412
    faculty: Information Technology
    jamess:
      age: '56'
      country: UK
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68615947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档