今日私が持っているものを例に挙げてみましょう: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 つのファイルをどのように取り込むのでしょうか?
ありがとう
答え1
やっと自分のやりたいことが実現できました。
これが私の解決策です:
柱
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/
感謝しますぶっきらぼう助けていただきありがとうございます。