Ansible将变量写入YAML文件

时间:2015-03-10 12:27:53

标签: python yaml jinja2 ansible

我有一个特定的ansible变量结构,我想从保险库中获取我的主机上的yaml文件。

让我们假设一个这样的结构:

secrets:
   psp1:
     username: this
     password: that
   secret_key: 123
  ...

我需要类似“通用”模板的东西来输出此刻包含的任何“秘密”,因为内容几乎完全根据当前环境而变化。

我能想到的最简单的解决方案是在模板中输出整个结构:

# config/secrets.yml
{{ secrets | to_yaml }}

但是jinja2 to_yaml过滤器只对第一级“yamlify”进行了更深层次的嵌套,在json中输出。

我可以以某种方式解决这个问题吗?有没有更简单的方法来实现我想要的目标?

感谢您的帮助!

1 个答案:

答案 0 :(得分:14)

  1. 正如jwodder所说,这是有效的。
  2. 如果您使用的是to_yaml(而不是to_nice_yaml),那么您的安装时间相当旧,是时候升级了。
  3. 使用to_nice_yaml
  4. 可以将自己的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