Python Ansible将变量写入YAML文件
我有一个特定的ansible变量结构,我想从vault中获取它,并将其保存到主机上的yaml文件中 让我们假设这样的结构:Python Ansible将变量写入YAML文件,python,yaml,jinja2,ansible,Python,Yaml,Jinja2,Ansible,我有一个特定的ansible变量结构,我想从vault中获取它,并将其保存到主机上的yaml文件中 让我们假设这样的结构: secrets: psp1: username: this password: that secret_key: 123 ... # config/secrets.yml {{ secrets | to_yaml }} 我需要一个类似“通用”的模板来输出当前包含的任何“机密”,因为内容几乎完全根据当前环境进行更改 我能想到的最简单的解
secrets:
psp1:
username: this
password: that
secret_key: 123
...
# config/secrets.yml
{{ secrets | to_yaml }}
我需要一个类似“通用”的模板来输出当前包含的任何“机密”,因为内容几乎完全根据当前环境进行更改
我能想到的最简单的解决方案是在如下模板中输出整个结构:
secrets:
psp1:
username: this
password: that
secret_key: 123
...
# config/secrets.yml
{{ secrets | to_yaml }}
但是jinja2 to_yaml过滤器只执行第一级的“yamlify”,更深层次的嵌套以json输出
我能解决这个问题吗?有没有更简单的方法来实现我想要的
谢谢你的帮助
来安装ansible(而不是来安装ansible),那么是时候升级了
来改善yaml
{{ secrets | to_nice_yaml( width=50, explicit_start=True, explicit_end=True) }}
请注意,
indent
现在可以被覆盖,至少从Ansible 2.2.0开始(我使用它缩进2个空格,以遵循一个项目的编码标准)
可以找到更好的
到\u nice\u yaml
的文档。JSON是yaml的有效子集,所以您仍然可以得到yaml。@jwodder Arg!你当然是对的。我不知道为什么我总是忽视这个事实。谢谢。这对我的playbook for elasticsearch非常有用,从阵列中转储了整个配置。这不是一个格式错误,这是一个降价功能。列表项中的代码必须是双缩进的。请注意,indent
现在可以被覆盖,至少从Ansible 2.2.0开始(我使用它缩进两个空格,以遵循一个项目的编码标准)。请参阅:@Kashyap您从哪里获得了_nice_yaml options文档?@EnzoR来自代码,而不是文档。但如果他们在过去的4年里更新了它,那是肯定的。