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

How do i add the contents of a pillar variable to a file with salt?

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

例如,如果我有像这样的支柱数据:

ssl:
    some-domain.com:
        key:
            -----BEGIN RSA PRIVATE KEY-----
            MIICX... snip ...

在远程 salt-minion 上,我想要一个像 /etc/nginx/ssl/som-domain.com.key 这样的文件,其中包含该私钥的内容,我该怎么做?我也乐于接受这样的回答,"You're doing it all wrong, dummy." 只要您能给我一些见解并指出正确的方向,就会有很大帮助。

我从一些测试中了解到 salt 的 file.managedfile.* 朋友,但我不确定是否有最好的/首选的方式将任意支柱数据添加到远程文件,因为我正在尝试做。

我仍在学习/使用 salt,所以我还在使用 Yaml + Jinja 进行模板化,如果它对您来说对制定适当的答案很重要的话。

谢谢!

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

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

但这看起来太老套了。在这里寻找更好的解决方案。

这可以从 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

如果您像您的示例所建议的那样管理 nginx,您可能也对 nginx.ng formula 感兴趣。它可以为您做到这一点。