私はhttpdサーバーがsaltstackの下で管理されている2つのミニオンを持っています。ポートに基づく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
問題は、2つのミニオンが独自のサーバー名を持っており、httpd-vhost.conf
はServerName www.example1.com
やwww.example2.com
のように異なっている必要があることです。 Saltstack grains
モジュールは、管理対象ファイルではなく.slsファイルに対してのみ機能します。それで、それを機能させるためのアドバイスはありますか?
- template: jinja
をfile.managed
に追加するだけで、構成ファイルでグレインを使用できます。
/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
{% endif -%}
SaltStackで私を売ったのはまさにこの機能です。
唯一の違いがソース行であるサーバーごとに、状態ファイルを作成できます。もちろん、各ソースには適切な構成があります。次に、top.slsで、各Webサーバーの正しい状態ファイルを指定します。