我有两个服务器在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.com和www.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服务器指定正确的状态文件。