You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible Jinja模板中提取指定用户的密码

在Jinja模板中提取指定用户的密码

问题说明

给定YAML格式的输入数据:

postgres_create_users:
        - {role: user1, password: password1}
        - {role: user2, password: password2}
        - {role: user3, password: password3}
        - {role: user4, password: password4}

需要在Jinja模板中提取user4对应的密码,当前模板代码片段为:

insights.jdbc.password={% for item in {{ postgres_create_users }} ??? %}

解决方案

方法1:循环筛选匹配项

直接通过循环遍历列表,判断角色匹配后输出密码,注意Jinja中引用变量无需额外嵌套{{ }}:

insights.jdbc.password={% for item in postgres_create_users %}
{% if item.role == 'user4' %}{{ item.password }}{% endif %}
{% endfor %}

方法2:使用过滤器简化代码

利用Jinja的selectattr和map过滤器,一步筛选并提取密码,更简洁高效:

insights.jdbc.password={{ postgres_create_users | selectattr('role', 'equalto', 'user4') | map(attribute='password') | first }}

解释:

  • selectattr('role', 'equalto', 'user4'):筛选出role字段等于user4的列表项
  • map(attribute='password'):从筛选结果中提取password属性
  • first:取结果列表的第一个元素(确保唯一匹配时可用)

方法3:调整数据结构(如果允许)

如果可以修改输入数据的结构,将列表改为键值对字典,能直接通过键名获取密码:
修改后的YAML输入:

postgres_create_users:
  user1: password1
  user2: password2
  user3: password3
  user4: password4

对应的Jinja代码:

insights.jdbc.password={{ postgres_create_users.user4 }}

内容的提问来源于stack exchange,提问作者dzbeda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:06:19