我有一个特定的ansible变量结构,我想从保险库中获取我的主机上的yaml文件。
让我们假设一个这样的结构:
secrets:
psp1:
username: this
password: that
secret_key: 123
...
我需要类似“通用”模板的东西来输出此刻包含的任何“秘密”,因为内容几乎完全根据当前环境而变化。
我能想到的最简单的解决方案是在模板中输出整个结构:
# config/secrets.yml
{{ secrets | to_yaml }}
但是jinja2 to_yaml过滤器只对第一级“yamlify”进行了更深层次的嵌套,在json中输出。
我可以以某种方式解决这个问题吗?有没有更简单的方法来实现我想要的目标?
感谢您的帮助!
答案 0 :(得分:14)
to_yaml
(而不是to_nice_yaml
),那么您的安装时间相当旧,是时候升级了。to_nice_yaml
可以将自己的kwargs传递给过滤函数,这些函数通常将它们传递给底层的python模块调用。就像你的情况一样this one。如下所示:
{{ secrets | to_nice_yaml( width=50, explicit_start=True, explicit_end=True) }}
只有抓住你才能覆盖indent=4, allow_unicode=True, default_flow_style=False