使用带变量的求值表达式的Ansible集合事实

使用带变量的求值表达式的Ansible集合事实,ansible,Ansible,我正在执行一个API请求并返回JSON。我需要在JSON响应中为以后的任务使用一个值。我试图使用set_fact来设置变量。在该解析过程中,我对该表达式进行求值,该表达式中有一个先前在剧本中设置的变量。我不知道如何在计算变量的同时计算表达式。我可以将变量硬编码为字符串,它可以工作 - set_fact: ip: "{{page_contents.json.variable1 | selectattr('node', 'equalto', 'variable2') | map(a

我正在执行一个API请求并返回JSON。我需要在JSON响应中为以后的任务使用一个值。我试图使用set_fact来设置变量。在该解析过程中,我对该表达式进行求值,该表达式中有一个先前在剧本中设置的变量。我不知道如何在计算变量的同时计算表达式。我可以将变量硬编码为字符串,它可以工作

   - set_fact:
      ip: "{{page_contents.json.variable1 | selectattr('node', 'equalto', 'variable2') | map(attribute='ip') | list | first }}"  

发现在没有引号的括号中包装变量是有效的

- set_fact:
      ip: "{{page_contents.json[variable1] | selectattr('node', 'equalto', variable2) | map(attribute='ip') | list | first }}"

不知道你的json看起来像什么,你试图从中获得的确切信息,你从上面的测试中得到的错误。。。如果variable1和variable2是我正在寻找的字符串,那么上面的工作就是这样。实际上这部分才是问题所在
page\u contents.json.variable1
。如果我想让variable1实际上是一个变量,我就不知道如何让它计算这个变量。我尝试过json['variable1']json.{{variable1}}}以及我能够想到和搜索的其他组合。我可以硬编码,它的工作。json的结构和访问值并不是问题所在,而是语法正确,因此变量将计算为值。