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