如何在 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 }}"
如果有人能想到更好的方法,请告诉我。
我有一个名为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 }}"
如果有人能想到更好的方法,请告诉我。