如何在 ansible 中搜索任何具有匹配属性的变量

How to search in ansible for any variable that has a matching attribute

我有一个名为myvar的变量,定义如下

- debug: var=myvar

ok: [127.0.0.1] => {
    "myvar": {
        "name": "george"
        "description": "blah blah"
    }
}

我想根据名称属性搜索该变量。例如,我想提供名称"george"并检索上层myvar变量。

- name: search
  set_fact:
    list_of_matched_vars: "{{ vars | json_query(query) }}"
  vars:
    query: "[?[].name=='george']"

上面returns一个空的结果。我需要以某种方式表示我想搜索任何变量名称,它具有与值 "george" 匹配的属性 "name"。事实上,我想搜索匹配值的列表,例如 "george, helen",但是,我想这会更棘手,所以让我们先看更简单的情况。

如何根据它的 'name' 属性搜索上面的 myvar 变量?

我不确定这是最好的方法,但这是我最终的做法

- name: search
  set_fact:
    list_of_matched_vars: "{{ vars | dict2items | selectattr('value.name', 'defined') | selectattr('value.name', 'in', list_of_names_to_search_for) | list }}"

如果有人能想到更好的方法,请告诉我。