Ansible - 删除键值对

标签 ansible

我有一个字典列表

member:
  - name: test2
    orig: test2
  - name: test1
    orig: test1

并且想要从列表中的所有字典中删除orig键和值。

- name: Print Firewall Group Member
  debug:
    msg: "{{ item }}"
  loop: "{{ member }}"
TASK [Print Firewall Group Member] *****************************************************************************************
ok: [fortigate01] => (item={'name': 'test2', 'orig': 'test2'}) => {
    "msg": {
        "name": "test2",
        "orig": "test2"
    }
}
ok: [fortigate01] => (item={'name': 'test1', 'orig': 'test1'}) => {
    "msg": {
        "name": "test1",
        "orig": "test1"
    }
}

最佳答案

  1. 使用过滤器ansible.utils.remove_keys 。例如,给定简化数据
member:
  - name: test2
    orig: test2
  - name: test1
    orig: test1

声明变量

names: "{{ member|ansible.utils.remove_keys(target=['orig']) }}"

给出

names:
  - name: test2
  - name: test1
  • (可选)使用过滤器 ansible.utils.keep_keys 。下面的声明给出了相同的结果
  • names: "{{ member|ansible.utils.keep_keys(target=['name']) }}"
    
  • 下一个选项是json_query
  • names: "{{ member|json_query('[].{name: name}') }}"
    

    用于测试的完整剧本示例

    - hosts: localhost
    
      vars:
    
        member:
          - name: test2
            orig: test2
          - name: test1
            orig: test1
    
        names: "{{ member|ansible.utils.remove_keys(target=['orig']) }}"
        name2: "{{ member|ansible.utils.keep_keys(target=['name']) }}"
        name3: "{{ member|json_query('[].{name: name}') }}"
    
      tasks:
    
        - debug:
            var: names
        - debug:
            var: name2
        - debug:
            var: name3
    

    关于Ansible - 删除键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74384102/

    相关文章:

    ansible - 通过 ansible 创建非交互式 samba 用户

    ansible - 如何在Ansible中遍历此词典?

    ansible - 如何使用ansibleVault上传加密文件?

    elasticsearch - 如何以非交互方式在 Elasticsearch 中启用 TLS?

    ansible - 在 ansible 中成为非 root 用户失败

    ansible - 替换 block 中的正则表达式之前和之后 - 插入符未按预期工作

    regex - Ansible 正则表达式环顾四周无法替换模式

    list - 字典的ansible访问列表

    ansible - 如何重用我编写的 ansible 角色?

    amazon-ec2 - 使用 cloudformation 堆栈在带有 ansible 的自动缩放组中配置 ec2