ansible-重新生成数据库输出,以便将其用作查找值的dict

ansible-重新生成数据库输出,以便将其用作查找值的dict,ansible,jinja2,Ansible,Jinja2,我使用两个搜索字符串(带有_项)查询数据库,并将其注册到变量中。我使用debug打印变量,得到如下结果: { "result": [ { "documentId": "653", "value": "Ubuntu" } ] }, { "result": [ { "documentId": "652", "value": "OracleLinux" } ] } 然后,我想写一个表达式来查找documentId的值, 取决于上述字段“

我使用两个搜索字符串(带有_项)查询数据库,并将其注册到变量中。我使用debug打印变量,得到如下结果:

{
 "result": [
  {
      "documentId": "653",
      "value": "Ubuntu"
  }
 ]
},
{
 "result": [
  {
    "documentId": "652",
    "value": "OracleLinux"
  }
 ]
}
然后,我想写一个表达式来查找documentId的值, 取决于上述字段“值”,即取决于操作系统

换句话说,在当前服务器上,如果{{ansible_distribution}}是'OracleLinux',它给我的是“652”,那么是否可以编写一个ansible表达式


或者有什么方法可以做到这一点,例如,通过先设置事实……我尝试了,但失败了,因为我尝试在with_items循环中设置事实,但只有第一个得到设置。

如果原始dict是
res
,那么:

{{ (res | map(attribute='result') | selectattr('value','equalto', ansible_distribution) | first).documentId }}

作为一种解决方法,我刚刚制作了一个dict,它必须手动与数据库同步,它看起来像这样:osys_dict:OracleLinux:652 Ubuntu:653这一个非常强大