【发布时间】:2019-09-03 01:32:54
【问题描述】:
我正在尝试让 Ansible 将哈希数组转换为键值对列表,其中键是第一个哈希中的一个值,而值是第一个哈希中的不同值。
一个例子会有所帮助。
我想转换:-
TASK [k8s_cluster : Cluster create | debug result of private ec2_vpc_subnet_facts] ***
ok: [localhost] => {
"result": {
"subnets": [
{
"availability_zone": "eu-west-1c",
"subnet_id": "subnet-cccccccc",
},
{
"availability_zone": "eu-west-1a",
"subnet_id": "subnet-aaaaaaaa",
},
{
"availability_zone": "eu-west-1b",
"subnet_id": "subnet-bbbbbbbb",
}
]
}
}
进入
eu-west-1a: subnet-aaaaaaaa
eu-west-1b: subnet-bbbbbbbb
eu-west-1c: subnet-cccccccc
我试过result.subnets | map('subnet.availability_zone': 'subnets.subnet_id')(根本不起作用)和json_query('subnets[*].subnet_id',它只是挑选出subnet_id 值并将它们放入一个列表中。
我想我可以使用 Zip 和 Hash in Ruby 来做到这一点,但我不知道如何在 Ansible 中进行这项工作,或者更具体地说是在 Jmespath 中进行。
【问题讨论】:
标签: json ansible yaml ansible-facts jmespath