让我们以我今天所拥有的为例: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 %}
Run Code Online (Sandbox Code Playgroud)
但是如何pillar['dbs']
用两个文件填充呢?
谢谢
我终于做到了我想做的事。
这是我的解决方案:
支柱
postgresql-database-novaauth:
user: novaauth
password: novaauth
name: novaauth
postgresql-database-peopleask:
user: peopleask
password: peopleask
name: peopleask
Run Code Online (Sandbox Code Playgroud)
它们可以位于不同的文件中。
盐
然后像这样创建你的盐:
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
Run Code Online (Sandbox Code Playgroud)
重要的是:
{% for key in pillar.keys() if key.startswith('postgresql-database-') %}
Run Code Online (Sandbox Code Playgroud)
这使您可以定义许多将被考虑的支柱,而不会覆盖其他支柱。
有趣的文章:http ://dev.mlsdigital.net/posts/SaltStackBeyondJinjaStates/
非常感谢brutasse的帮助。
归档时间: |
|
查看次数: |
1889 次 |
最近记录: |