Я пытаюсь заставить 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 в Ruby , но я не знаю, как сделать эту работу в Ansible или, более конкретно, в Jmespath .