如何使用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"
希望对您有所帮助!
干杯!
运行 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"
希望对您有所帮助! 干杯!