我有两个带有 httpd 服务器的 minions,它们在 saltstack 下管理。VirtualHost
需要根据端口分别配置它们。因此,/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
问题是两个 minions 有自己的服务器名称,httpd-vhost.conf
应该像ServerName www.example1.com
和 一样不同www.example2.com
。Saltstackgrains
模块仅适用于 .sls 文件,而不是托管文件。那么有什么建议可以让它工作吗?
答案1
只需添加- template: jinja
到您的file.managed
配置文件中,您就可以使用grains。
/etc/httpd/conf.d/httpd-vhosts.conf:
file.managed:
- source: salt://webserver/httpd-vhosts.conf
- template: jinja
您可以在源文件中使用 Grains,如下所示:
{% if grains['id'] == 'dev' -%}
ServerName dev.example.com
{% else %}
ServerName example.com
{% endif -%}
正是这个功能让我选择了 SaltStack。
答案2
您可以为每个服务器创建状态文件,其中唯一的区别是源代码行。当然,每个源都有适当的配置。然后在 top.sls 中为每个 Web 服务器指定正确的状态文件。