#python #json #ansible #jmespath #json-query
#python #json #ansible #jmespath #json-запрос
Вопрос:
Запускаю модуль Ansible ec2_instance_facts и регистрирую его в переменной с именем ec2.
У меня есть теги на экземпляре ec2, в имени ключа которого есть символы двоеточия.
Я могу получить значение тега среды, используя это:
set_fact:
number_of_nodes: "{{ ec2.instances|json_query('[*].tags.environment') }}"
Но не удается получить значение «aws: lc:sg», пытаясь выполнить следующее:
set_fact:
number_of_nodes: "{{ ec2.instances|json_query('[*].tags.aws:lc:sg') }}"
Также попробовал, поместив символы , , /, // перед двоеточием. Не работает.
Кто-нибудь может помочь? : (
Ответ №1:
При желании экранировать ? : -
документы ansible рекомендуют заключать их в двойные кавычки "
. (здесь документы, в вашем случае это довольно сложно, поскольку вы должны использовать одинарные кавычки в фильтре json_query. Вы можете попробовать заменить аргументы этого фильтра на var, а позже, когда вы объявите этот var, вы сможете использовать двойные кавычки.
set_fact:
number_of_nodes: "{{ ec2.instances|json_query(the_var) }}"
vars:
the_var: "[*].tags.aws:lc:sg"
Я надеюсь, что это поможет!
Приветствия!
Комментарии:
1. большое вам спасибо. добавление одинарной кавычки снаружи и двойной кавычки внутри сработало для меня. ‘ the_var: [*].»tags.aws:lc:sg»‘
2. Рад это слышать!
3. Было бы неплохо, если бы вы могли отредактировать ответ, поскольку он работает не так, как описано в нем, а только так, как в комментарии @sherri