我的同事正在维护一个配置文件,该文件由 SaltStack 部署到生产/测试/暂存环境中。我通过使用 diff 来维护此文件,以查看发生了什么变化并编写适当的 jinja 代码片段。
文件名为program.conf
,SaltStack 版本为program.conf.jinja
。
program.conf
有如下形式的行:
variable = "value"
program.conf.jinja
是:
variable = "{{ value }}"
从 diff 的角度来看,它们是不同的。但从我的角度来看,它们是相同的。我正在寻找一个类似 pragma 的功能,我可以在其中将 jinja 文件标记为以下内容,这样我就不会在 diff 的输出中得到它:
variable = "{{ value }}" # pragma-same: variable = "value"
我还将使用该实用程序生成警报,强制人们更新 jinja 文件中缺少的任何变量。
variable = "value"
有时会变成更复杂的诗节,例如:
{% if pillar.get(...) %}
variable = {{ value }}
{% else %}
variable = {{ value + 2 }}
{% endif %}
答案1
您是否愿意创建一个规范化的临时文件并与其进行比较?
sed 's/{{ \(.*\) }}/\1/' program.conf.jinja > temp && diff program.conf temp