2017-09-04 50 views
0

我需要在json_query过滤器中传递变量。Ansible:在json_query过滤器中传递变量

该实施例,具有一个固定的字符串,是否正常工作(字符串=短裙):

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

但我需要传递的变量,而不是短裙

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

{{my_var} }是在前面步骤中检索到的字符串

您是否具有正确的语法,以便变量{{my_var}}可以在参数中正确传递?

感谢您的帮助。

的问候,一个任务

+0

你可以试试这个:'my_value_exist:“{{my_json.json | json_query(“包含(component.name,'my_var' )')}}“' –

+0

感谢您的回答。 – dbo

+0

该值存在于json中,但使用此语法返回的值等于false。 my_value_exit应返回true – dbo

回答

1

使用辅助变量:

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

我发现这个任务的解决方案: – dbo

+0

- 名称:我的价值存在 调试:VAR =项目 with_items: “{{my_json.json | json_query(my_query)}}” 瓦尔: my_query:“contains(component.name,{{my_var | to_json | replace('\”',\“'\”)}})“ register:my_value_exist – dbo

+0

请单独回答。我的想法。 –