#json #ansible
#json #ansible
Вопрос:
Мне нужно извлечь идентификаторы томов EBS из регистра, возвращаемого при вызове создания EC2. Я уже разобрался с устройством, в котором хранятся нужные мне данные, но последний шаг ускользает от меня.
Я пытался сделать это с:
- set_fact:
volume_id_list: "{{ devices | json_query('[*].volume_id') }}"
- debug: var=volume_id_list
И это возвращает пустую строку.
"devices": {
"/dev/sdf": {
"delete_on_termination": true,
"status": "attached",
"volume_id": "vol-0b2c92cdcblah"
},
"/dev/xvda": {
"delete_on_termination": true,
"status": "attached",
"volume_id": "vol-086a722c4blah"
}
}
То, что я хотел увидеть, было чем-то вроде:
«vol-0b2c92cdcblah» «vol-086a722c4blah»
Ответ №1:
Ваше выражение jmespath в json_query
не соответствует ничему в вашей структуре данных. Таким образом, пустая строка является абсолютно правильным результатом 🙂
Теперь, чтобы получить то, что вы хотите, из вашей текущей структуры данных, вам нужно изменить свой запрос: json_query('*.volume_id')
Комментарии:
1. Пробовал — все еще пустой список.
2. Виноват! Спасибо — это работает. Также спасибо за указатель на документацию jmespath. Очень информативно.
3. @cassini232 рассмотрите возможность принятия решения, если это сработало для вас. Это позволит людям знать, что на ваш ответ есть правильный ответ при поиске.