如何使用Ansible在JSON查询中转义冒号

时间:2019-03-15 07:21:57

标签: python json ansible jmespath json-query

运行 ec2_instance_facts Ansible模块并将其注册到名为 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 个答案:

答案 0 :(得分:1)

当想要转义? : -时,ansible文档建议使用双引号"对其进行引用。 (docs here在您的情况下相当困难,因为您应该在json_query过滤器中使用单引号。 您可以尝试用var替换该过滤器的参数,然后在声明该var时可以使用双引号。

 set_fact:
    number_of_nodes: "{{ ec2.instances|json_query(the_var) }}"
 vars:
    the_var: "[*].tags.aws:lc:sg"

我希望这会有所帮助! 干杯!