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

无需运行Ansible,如何通过命令行展开Jinja2模板生成标准YAML?

问题描述

我有一个包含Jinja2语法的YAML模板文件:

foo:
  - "A"
  - "B"

bar: 
  inner2: "{{ foo }}"

baz:
  bla:
    inner1: "{{bar.inner2 | sort | join | lower}}"

希望将其展开为标准YAML格式:

foo:
  - "A"
  - "B"

bar: 
  inner2:
    - "A"
    - "B"

baz:
  bla:
    inner1: "ab"

请问有没有不需要运行Ansible的命令行工具,能实现类似 expand-jinja ansible/roles/X/default/main.yml > out.yml 的功能来完成这个转换?

可行方案

有,用jinja2-cli这个工具就能搞定,它是专门用来渲染Jinja2模板的命令行工具,完全不需要依赖Ansible。

安装方法

直接用pip安装即可:

pip install jinja2-cli

使用步骤

  1. 先把模板里的变量部分提取成单独的YAML变量文件,比如命名为vars.yml,内容如下:
foo:
  - "A"
  - "B"
  1. 把原模板中的变量定义移除,剩下的模板内容保存为template.j2:
bar: 
  inner2: "{{ foo }}"

baz:
  bla:
    inner1: "{{bar.inner2 | sort | join | lower}}"
  1. 执行以下命令完成渲染:
jinja2 template.j2 vars.yml > out.yml

生成的out.yml就是你想要的标准YAML格式。

如果不想拆分文件,也可以通过--format yaml参数直接从原文件读取变量(需要调整原模板结构,将变量与模板逻辑分离),或者用-D参数逐个传递变量,但拆分文件的方式逻辑更清晰,也更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:55:24