如何使用Salt将pillar变量内容添加到文件中?

7

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

例如,如果我有以下pillar数据:

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

在远程salt-minion上,我想要有一个文件,如/etc/nginx/ssl/some-domain.com.key,它包含了私钥的内容,我该怎么做?如果你告诉我一些洞见并指引我朝正确的方向努力,无论是像“你做错了,笨蛋”这样的答案都可以。我知道salt的file.managedfile.*等命令,但我不确定是否有最佳/首选的方式将任意pillar数据添加到远程文件中。

我仍在学习/破解salt,所以我还在使用Yaml + Jinja进行模板编写,如果对你制定适当的答案有影响,请告诉我。

谢谢!

编辑:顺便说一句,当前靠破解的解决方案是:

在我的文件根目录/srv/salt/中创建一个文件,如/srv/salt/ssl/some-domain.com.key,其中包含类似于{{ salt[pillar.get]('ssl:some-domain.com:key') }}的内容。

但那听起来太弱了。我正在寻找更好的解决方案。

1个回答

10

这可以从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感兴趣。它可以帮助你完成这个工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接