私が今日持っているものの例を見てみましょう: https://Gist.github.com/Natim/6548009
私はその柱を使ってデータベースとユーザーを作成します。いずれかの役割を持つサーバーでは正常に機能しますが、同じサーバーで両方の役割が必要な場合は、最後の柱のみが考慮されます。
役割ごとにソルトが作成されるように、ピラーとソルトを作成するにはどうすればよいですか?
私はそのようなことをすることができます:
{% for db in pillar['dbs'] %}
postgresql_db_{{ db['postgresql_db_name'] }}:
postgres_database.present:
- name: {{ db['postgresql_db_name'] }}
- owner: {{ db['postgresql_db_user'] }}
- encoding: UTF8
- lc_ctype: en_US.UTF8
- lc_collate: en_US.UTF8
- template: template0
- runas: postgres
- require:
- service: postgresql
- postgres_user: postgresql_user_{{ db['postgresql_db_user'] }}
postgresql_user_{{ db['postgresql_db_user'] }}:
postgres_user.present:
- name: {{ db['postgresql_db_user'] }}
- password: {{ db['postgresql_db_password'] }}
- require:
- service: postgresql
{% endfor %}
では、pillar['dbs']
に2つのファイルを入力するにはどうすればよいでしょうか?
ありがとう
やっとやりたいことができました。
これが私の解決策です:
柱
postgresql-database-novaauth:
user: novaauth
password: novaauth
name: novaauth
postgresql-database-peopleask:
user: peopleask
password: peopleask
name: peopleask
それらは異なるファイルにある可能性があります。
塩
次に、次のように塩を作成します。
postgresql:
pkg:
- name: postgresql-9.3
- installed
service.running:
- enable: True
{% for key in pillar.keys() if key.startswith('postgresql-database-') %}
postgresql_db_{{ pillar[key]['name'] }}:
postgres_database.present:
- name: {{ pillar[key]['name'] }}
- owner: {{ pillar[key]['user'] }}
- encoding: UTF8
- lc_ctype: en_US.UTF8
- lc_collate: en_US.UTF8
- template: template0
- runas: postgres
- require:
- service: postgresql
- postgres_user: postgresql_user_{{ pillar[key]['user'] }}
postgresql_user_{{ pillar[key]['user'] }}:
postgres_user.present:
- name: {{ pillar[key]['user'] }}
- password: {{ pillar[key]['password'] }}
- require:
- service: postgresql
{% endfor %}
postgresql.conf:
file.append:
- name: /etc/postgresql/9.3/main/postgresql.conf
- text: "listen_addresses = '*'"
- require:
- pkg: postgresql
- watch_in:
- service: postgresql
重要なことはこれです:
{% for key in pillar.keys() if key.startswith('postgresql-database-') %}
これにより、他の柱を上書きせずに考慮される多くの柱を定義できます。
興味深い記事: http://dev.mlsdigital.net/posts/SaltStackBeyondJinjaStates/
助けてくれた brutasse に感謝します。