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

Ansible如何通过jinja2处理多级变量生成域名与用户映射列表

Ansible变量结构转换实现方法

方案1:使用json_query过滤器(写法简洁)

需要先在Ansible控制节点安装jmespath依赖:pip install jmespath,之后直接声明变量即可:

domains_with_user: >-
  {{
    webserver.sites |
    map('json_query', 'domains[].{domain: domain, user: user}') |
    flatten
  }}

方案2:纯Jinja2原生语法(无额外依赖)

不需要安装任何第三方包,直接用Jinja2循环实现:

domains_with_user: >-
  {% set res = [] %}
  {% for site in webserver.sites %}
  {% for d in site.domains %}
  {% do res.append({'domain': d.domain, 'user': site.user}) %}
  {% endfor %}
  {% endfor %}
  {{ res }}

两种写法均可以直接在变量定义处使用,运行后得到的domains_with_user就是目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:42:02