web-dev-qa-db-ja.com

saltstackを使用して、さまざまなミニオンのさまざまな構成ファイルを管理するにはどうすればよいですか?

私は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.confServerName www.example1.comwww.example2.comのように異なっている必要があることです。 Saltstack grainsモジュールは、管理対象ファイルではなく.slsファイルに対してのみ機能します。それで、それを機能させるためのアドバイスはありますか?

4
seanlook

- template: jinjafile.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で私を売ったのはまさにこの機能です。

8
Dan Garthwaite

唯一の違いがソース行であるサーバーごとに、状態ファイルを作成できます。もちろん、各ソースには適切な構成があります。次に、top.slsで、各Webサーバーの正しい状態ファイルを指定します。

1
Bogdan