如何使用ansible在json查询中转义冒号字符

How to escape colon character in json query using ansible

运行 ec2_instance_facts Ansible 模块并将其注册到名为 ec2 的变量中。

我在 ec2 实例上有标签,它的键名中有冒号字符。

我可以使用这个获取 environment 标签值:

 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') }}"

还尝试将 \、\、/、// 字符放在冒号之前。不起作用。

有人可以帮忙吗? :(

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

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

希望对您有所帮助! 干杯!