我有一个字典列表,我想要一个特定的值。 queue-port的node_port。
[
{
"name": "queue-port",
"node_port": 32614,
"port": 5672,
"protocol": "TCP",
"target_port": 5672
},
{
"name": "cluster-port",
"node_port": 31018,
"port": 4369,
"protocol": "TCP",
"target_port": 4369
},
{
"name": "dist-port",
"node_port": 30732,
"port": 25672,
"protocol": "TCP",
"target_port": 25672
}
]
我知道如何在python中使用lambda或生成器表达式执行此操作,当遇到ansible完成相同的结果时,我会陷入困境。它是一个从openshift_raw模块生成的对象,所以我可能对python / ansible太过无聊,并且在必要时使这更复杂。
register: opnshft_raw
{{ opnshft_raw.results[0]['result']['spec']['ports'] }}
是我要搜索的列表。
>>> (item for item in results if item["name"] == "queue-port").next()['node_port']
32614
答案 0 :(得分:1)
您需要使用set_fact模块在循环中解析列表变量,并在满足条件时将新变量设置为该值。
示例:
open