| {%- from "postgresql/map.jinja" import server, cluster with context %} |
| {%- if cluster.enabled %} |
| |
| {%- set repuser_name = cluster.get("replication_user", {}).get("name", "repuser") %} |
| {%- set repuser_password = cluster.get("replication_user", {}).get("password") %} |
| |
| postgresql_user_cluster_repuser: |
| postgres_user.present: |
| - name: {{ repuser_name }} |
| - user: postgres |
| - replication: True |
| - superuser: True |
| - password: {{ repuser_password }} |
| - require: |
| - service: postgresql_service |
| - pkg: postgresql_packages |
| |
| {%- set nodename = salt.grains.get('nodename') %} |
| |
| {%- for database_name, database in server.get('database', {}).iteritems() %} |
| bdr_group_create_{{ database_name }}: |
| module.run: |
| - name: postgres.psql_query |
| - query: SELECT bdr.bdr_group_create(local_node_name := '{{ nodename }}', node_external_dsn := 'host={{ cluster.get("local") }} user={{ repuser_name }} password={{ repuser_password }} dbname={{ database_name }}'); |
| - user: postgres |
| - maintenance_db: {{ database_name }} |
| - unless: sudo -H -u postgres bash -c 'timeout 10s psql {{ database_name }} -c "SELECT bdr.bdr_node_join_wait_for_ready();"' |
| - require: |
| - postgres_user: postgresql_user_cluster_repuser |
| {%- endfor %} |
| |
| {%- endif %} |
| |