我正在尝试对我的ansible变量使用通配符,但似乎我无法设法使用它。
我尝试了here中的某些内容,但还是一样。
Ansible输出
"reboot_required": false,
"updates": {
"0720a128-90b1-4b21-a8cf-3c5c86239435": {
"kb": [
"2267602"
],
"installed": false,
"id": "0720a128-90b1-4b21-a8cf-3c5c86239435",
"categories": [
"Definition Updates",
"Windows Defender"
],
"title": "Definition Update for Windows Defender Antivirus - KB2267602 (Definition 1.297.412.0)"
},
"60bbf4af-afd3-45fe-aad2-6d72beddeba2": {
"kb": [
"4509475"
],
"installed": false,
"id": "60bbf4af-afd3-45fe-aad2-6d72beddeba2",
"categories": [
"Updates",
"Windows Server 2016"
],
"title": "2019-06 Cumulative Update for Windows Server 2016 for x64-based Systems (KB4509475)"
我正在尝试获取标题或ID
- name: debug
debug:
msg: "{{ item.updates.*.id }}"
with_items:
- "{{ result }}"
感谢帮助
答案 0 :(得分:0)
他在您链接的示例中使用的通配符是json_query过滤器的一部分。他将管道传递到json_query过滤器,然后将通配符用作该语法的一部分。
results | json_query('[].block_device_mapping.*.snapshot_id')
您在示例中未使用json_query,因此,此语法不可用并且不起作用。
尝试将结果传递到json_query,然后包括要获取的路径。如果已经创建了{{results}},则可以放弃with_items并使用类似以下内容:
{{ results | json_query('updates.*.id') }}
我在这里猜测确切的语法,但是您绝对必须从json_query开始。
要弄清楚所需的确切语法,请从小管道开始到json_query,然后获取最上面的元素(在您的情况下为更新),在过滤器中添加部分,直到将其缩小为所需的信息为止。我已经链接到下面的探路者了。
参考:
edit:弗拉基米尔(Vladimir)答案的第一部分中的语法看起来比我猜测的要性感。尝试使用他的语法来了解有效的方法,并使用我的答案来了解问题所在。然后将他标记为正确答案。
答案 1 :(得分:0)
鉴于上面的可行输出将以下任务存储在变量 result 中
- set_fact:
id_list: "{{ result.updates|
json_query('*.id')
}}"
- debug:
var: id_list
给出 id (类似标题)的列表
id_list:
- 0720a128-90b1-4b21-a8cf-3c5c86239435
- 60bbf4af-afd3-45fe-aad2-6d72beddeba2
以及下面的任务
- set_fact:
my_list: "{{ result.updates|
json_query('*.{ id: id, title: title }')
}}"
- debug:
var: my_list
给出 id,标题散列的列表
my_list:
- id: 0720a128-90b1-4b21-a8cf-3c5c86239435
title: Definition Update for Windows Defender Antivirus - KB2267602 (Definition 1.297.412.0)
- id: 60bbf4af-afd3-45fe-aad2-6d72beddeba2
title: 2019-06 Cumulative Update for Windows Server 2016 for x64-based Systems (KB4509475)
答案 2 :(得分:0)
请尝试以下。我还没有测试过。
- name: debug
debug:
msg: "{{ item|first }}:{{ item[item|first].title }}"
with_items:
- "{{ result.updates }}"