如何使用saltstack来管理不同minions的不同配置文件?

如何使用saltstack来管理不同minions的不同配置文件?

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

相关内容