简体   繁体   English

Ansible:在 json_query 过滤器中传递一个变量

[英]Ansible : pass a variable in a json_query filter

I need to pass a variable in a json_query filter.我需要在 json_query 过滤器中传递一个变量。

This example, with a fixed string, is working correctly (string=tutu) :此示例使用固定字符串,工作正常 (string=tutu):

- set_fact:
 my_value_exist: "{{ my_json.json | json_query('contains(component.name,`tutu`)')}}"

But i need to pass a variable , instead of tutu但我需要传递一个变量,而不是 tutu

- set_fact:
 my_value_exist: "{{ my_json.json | json_query('contains(component.name,`{{my_var}}`)')}}"

{{my_var}} is a string retreived in a previous step {{my_var}} 是在上一步中检索到的字符串

Do you have the correct syntax, so that the variable {{my_var}} could be passed correctly in parameter ?您是否有正确的语法,以便可以在参数中正确传递变量 {{my_var}} ?

Thanks for your help.感谢您的帮助。

Regards,问候,

Use helper variable for a task:对任务使用辅助变量:

- set_fact:
    my_value_exist: "{{ my_json.json | json_query(qry) }}"
  vars:
    qry: 'contains(component.name,`{{my_var}}`'

If you would like to avoid using a helper var you can use the second var directly by wrapping it in escaped double quotes ( \\" ) between plus characters ( + ) like this:如果你想避免使用辅助变量,你可以直接使用第二个变量,方法是将它用转义双引号 ( \\" ) 包裹在加号 ( + ) 之间,如下所示:

- set_fact:
    my_value_exist: "{{ my_json.json | json_query('contains(component.name,`\" + my_var + \"`)') }}"

I know that this is a old question but it might help someone since this is the top result on the subject on google.我知道这是一个老问题,但它可能对某人有所帮助,因为这是 google 上该主题的最佳结果。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM