gpt4 book ai didi

ansible - 从符合条件的 ansible 字典列表中过滤元素

转载 作者:行者123 更新时间:2023-12-04 16:27:51 26 4
gpt4 key购买 nike

以下是我的数据的人为示例。当列表中的任何字典mylst.env 时,我想提取所有客户的姓名有一个名为 n1 的 key
我想这可以通过嵌套循环来完成,但无法弄清楚如何。

- hosts: localhost
gather_facts: no
vars:
- mylst:
- apiVersion: v1
name: customer1
metaData:
cycles: 10
ships: 12
env:
- name: n1
value: v1
- name: n2
value: v2
- apiVersion: v1
name: customer2
metaData:
cycles: 10
ships: 12
env:
- name: n1
value: v1
- name: n3
value: v3
- apiVersion: v1
name: customer3
metaData:
cycles: 10
ships: 12
env:
- name: n3
value: v1
- name: n4
value: v4
tasks:
- set_fact:
cust_lst: "{{ cust_lst|default([]) + [item.name] }}"
with_items: "{{ mylst }}"
# loop through item.env and look for elements where elem.name == n1
when: item.env | length > 0

- debug: var=cust_lst

最佳答案

json_query过滤器是处理此类任务的绝佳工具。需要一点时间来环绕你的头,但试一试:

  - set_fact:
cust_lst: "{{ mylst | json_query(query) }}"
vars:
query: "[?env[?name=='n1']].name"
您可以在 official documentation 了解更多信息和这个无耻的塞 blog post

关于ansible - 从符合条件的 ansible 字典列表中过滤元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59202186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com