如何使用saltstack来pipe理不同的小人物的不同的configuration文件?

我有两个服务器在saltstack下pipe理httpd服务器。 基于端口的VirtualHost需要单独configuration。 所以/etc/httpd/conf.d/httpd-vhost.conf是这样看的:

 httpd: pkg.installed: [] service.running: - require: - pkg: httpd - watch: - file: /etc/httpd/conf.d/httpd-vhosts.conf /etc/httpd/conf.d/httpd-vhosts.conf: file.managed: - source: salt://webserver/httpd-vhosts.conf 

问题是这两个奴才有自己的服务器名称和httpd-vhost.conf应该是不同的像ServerName www.example1.comwww.example2.com 。 Saltstack grains模块只适用于.sls文件不受pipe理的文件。 那么任何build议,使其工作?

只要添加- template: jinja到你的file.managed ,你可以在configuration文件中使用谷物。

 /etc/httpd/conf.d/httpd-vhosts.conf: file.managed: - source: salt://webserver/httpd-vhosts.conf - template: jinja 

您可以在源文件中使用谷物,如下所示:

 {% if grains['id'] == 'dev' -%} ServerName dev.example.com {% else %} ServerName example.com {% end if -% } 

正是这个特点把我卖给了盐。

您可以创build状态文件,每个服务器唯一的区别是源代码行。 当然,每个源都有适当的configuration。 然后在top.sls中为每个Web服务器指定正确的状态文件。