通过键从 Ansible 字典中获取项目

Get items from Ansible dictionary by key

我有字典:

sshd_additional_user_cfg:
- name: root
  authorized_keys:
    - key2
    - key3
- name: user1
  authorized_keys:
    - key1

我如何select 字典中名称为 root 的对象,以便我得到

- name: root
  authorized_keys:
    - key2
    - key3

您可以创建一个包含所有与 name=='root'

匹配的元素的新变量
  tasks:
  - set_fact:
      my_new_var: "{{ my_new_var | default([]) + [item] }}"
    when: item.name == 'root'
    with_items: "{{ sshd_additional_user_cfg }}"

  - debug: var=my_new_var

问:"我怎样才能select那个名字为root的字典的对象?"

答:使用过滤器 selectattr。例如

    - set_fact:
        selected_users: "{{ sshd_additional_user_cfg|
                            selectattr('name', 'eq', 'root')|
                            list }}"
    - debug:
        var: selected_users

给予

  selected_users:
  - authorized_keys:
    - key2
    - key3
    name: root