python - 在 Ansible/Jinja 中过滤字典列表和打印值

标签 python dictionary ansible jinja2

虽然这应该是一个微不足道的问题,但我无法解决这个问题。

我正在使用 Ansible(和 Jinja 模板)构建模板,并且我有一个字典列表(此处显示为 JSON):

"datacenters": [{
    "description": "Main Datacenter", 
    "name": "main"
}, {
    "description": "Secondaty Datacenter", 
    "name": "secondary"
}]

我想按名称过滤并打印描述。在我的模板中,我可以到这里:

{{ datacenters | selectattr("name", "equalto", "main") | list | first | to_nice_json }}

输出:

{
    "description": "Main Datacenter",
    "name": "main"           
}

但我不能只得到描述。例如当我使用:

{{ datacenters | selectattr("name", "equalto", "main") | list | first | attr("description") }}

我得到:

AnsibleUndefinedVariable: 'unicode object' has no attribute 'description'

我找到了这个链接 https://github.com/ansible/ansible/issues/19356谷歌搜索错误,但我没有从 list 中加载变量。 知道如何解决这个问题吗?

最佳答案

您可以对管道的结果进行分组:

{{ (datacenters | selectattr("name", "equalto", "main") | list | first).description }}

关于python - 在 Ansible/Jinja 中过滤字典列表和打印值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42628649/

相关文章:

python - 使用 Python 删除 YAML 文件中的 block

python - 更新 RDD pyspark 中的字典值

ssl - kolla-ansible TLS 部署失败

ansible - Ansible 中缺少 sudo 密码

python - 如何从 Ansible python playbook api 获取远程标准输出

python - Tornado:识别/跟踪 websocket 的连接?

python - 如何在 Python 中调试卡住的 asyncio 协程?

python - 生成一个重新映射的 numpy 数组作为 View 。

python - 如何在dict中搜索部分文本?

java - HashMap 在第 12 个索引中插入第一条记录