如何根据存货的价值在Ansible上设置事实

如何根据存货的价值在Ansible上设置事实,ansible,jinja2,Ansible,Jinja2,我有一个这样的清单 host: vars: fruit: - {type: melon, id: 1} - {type: apple, id: 2} 目前我经常得到如下的id list: >- {{groups['host']|map('extract',hostvars,'fruits')|first}} - set_fact: fruit_id: "{{list[2].id}}" 如何使用与a

我有一个这样的清单

host:
    vars:
        fruit:
            - {type: melon, id: 1}
            - {type: apple, id: 2}
目前我经常得到如下的id

list: >-
   {{groups['host']|map('extract',hostvars,'fruits')|first}} 

- set_fact:
    fruit_id: "{{list[2].id}}"
如何使用与apple相同的类型获取id值

任务

-调试:
msg:“{{list|
selectattr('type'、'apple'、'apple')|
映射(属性='id')|
列表| first}”
给予


循环中的相同任务

-调试:
msg:“{{list|
selectattr('type','==',item)|
映射(属性='id')|
列表| first}”
循环:
-甜瓜
-苹果
给予

“msg”:“1”
“msg”:“2”

感谢您的及时回复,我测试它100%有效
    "msg": "2"