可以使用Ansible的过滤器来实现此操作。首先,使用json_query
筛选出带有特定第二个键值对值的字典,然后使用循环和item()
过滤器来获取第一个键值对的值。
示例如下:
- hosts: localhost
vars:
my_dict:
- {key1: value1, key2: 123}
- {key1: value2, key2: 456}
- {key1: value3, key2: 789}
tasks:
- debug:
msg: "{{ my_dict | json_query('[?key2==`456`]') | map(attribute='key1') | first }}"
输出结果为:
TASK [debug] *********************************************************************************************************************************************************
ok: [localhost] => {
"msg": "value2"
}
这里用json_query
筛选了my_dict
列表中键值对key2
等于456
的字典(即第二个键值对值为456
的字典),然后使用map()
和attribute()
过滤器获取key1
的值并转化为列表,最后使用first
过滤器获取列表中的第一个值作为输出结果。