如何将柱变量的内容添加到带盐的文件中?

Kev*_*vin 3 python salt-stack

在salt状态文件中,如何将柱的内容添加到远程salt-minion上的文件中?

例如,如果我有支柱数据,如:

ssl:
    some-domain.com:
        key:
            -----BEGIN RSA PRIVATE KEY-----
            MIICX... snip ...
Run Code Online (Sandbox Code Playgroud)

在远程salt-minion上,我希望有一个类似的文件,/etc/nginx/ssl/som-domain.com.key其中包含该私钥的内容,我该怎么做?我也愿意接受这样一个答案:"你做错了,假的." 只要你给我一些见解并指出我正确的方向,它将会有很大的帮助.

我知道盐的file.managed,和file.*来自某些测试的朋友,但我不确定是否有一种最佳/首选的方法可以将任意支柱数据添加到远程文件中,就像我正在尝试的那样.

我还在学习/用盐攻击,所以我还在使用Yaml + Jinja进行模板化,如果你在制定一个合适的答案时很重要.

谢谢!

编辑: 顺便说一下,目前的hacky解决方案是:

在我的file_root/srv/salt /中创建一个文件,就像/srv/salt/ssl/some-domain.com.key包含类似的文件一样{{ salt[pillar.get]('ssl:some-domain.com:key') }}

但这看起来真是太烂了.在这里寻找更好的解决方案.

And*_*rew 7

这可以从file.managed状态获得,但不可否认,文档中很容易遗漏:

# /srv/salt/something.sls
some-domain-key:
  file.managed:
    - name: /etc/nginx/ssl/some-domain.com.key
    - mode: 600
    - contents_pillar: ssl:some-domain.com:key
Run Code Online (Sandbox Code Playgroud)

如果你正在管理nginx,你可能也对nginx.ng公式感兴趣.它可以为你做到这一点.