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

时间:2017-09-04 14:16:44

标签: json ansible

我需要在json_query过滤器中传递一个变量。

这个带有固定字符串的示例正常工作(string = tutu):

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

但我需要传递一个变量,而不是tutu

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

{{my_var}}是在上一步中检索过的字符串

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

感谢您的帮助。

此致

2 个答案:

答案 0 :(得分:3)

为任务使用辅助变量:

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

答案 1 :(得分:0)

如果您想避免使用辅助变量,则可以通过将第二个变量包装在加号(\")之间的转义双引号(+)中来直接使用第二个变量,如下所示:

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

我知道这是一个古老的问题,但是它可能会对某人有所帮助,因为这是google上该主题的最高结果。