68 lines
2.3 KiB
YAML
68 lines
2.3 KiB
YAML
---
|
|
- name: Get ip address of postgres container
|
|
ansible.builtin.shell: docker inspect --format '{''{range.NetworkSettings.Networks}''}''{''{.IPAddress}''}''{''{end}''}' {{ postgres_hostname }}
|
|
register: ip_address
|
|
ignore_errors: true
|
|
changed_when: false
|
|
|
|
- name: Setup postgres users.
|
|
community.postgresql.postgresql_user:
|
|
login_host: "{{ ip_address.stdout }}"
|
|
login_user: "{{ postgres_user }}"
|
|
login_password: "{{ postgres_password }}"
|
|
db: postgres
|
|
name: "{{ item.name }}"
|
|
password: "{{ item.password }}"
|
|
loop: "{{ postgres_users }}"
|
|
|
|
- name: Grant privilieges to users.
|
|
community.postgresql.postgresql_privs:
|
|
login_host: "{{ ip_address.stdout }}"
|
|
login_user: "{{ postgres_user }}"
|
|
login_password: "{{ postgres_password }}"
|
|
db: "{{ item.1 }}"
|
|
privs: SELECT
|
|
objs: ALL_IN_SCHEMA
|
|
role: "{{ item.0.name }}"
|
|
loop: "{{ postgres_users | subelements('grant_databases') }}"
|
|
when: postgres_users | selectattr('grant_databases', 'defined') | list | length > 0
|
|
|
|
- name: Revoke privilieges to users.
|
|
community.postgresql.postgresql_privs:
|
|
login_host: "{{ ip_address.stdout }}"
|
|
login_user: "{{ postgres_user }}"
|
|
login_password: "{{ postgres_password }}"
|
|
db: "{{ item.1.database }}"
|
|
state: absent
|
|
privs: SELECT
|
|
objs: "{{ item.1.name }}"
|
|
role: "{{ item.0.name }}"
|
|
loop: "{{ postgres_users | subelements('revoke_tables') }}"
|
|
when: postgres_users | selectattr('revoke_tables', 'defined') | list | length > 0
|
|
|
|
- name: Copy {{ role_name }} conf
|
|
ansible.builtin.template:
|
|
src: "{{ item }}"
|
|
dest: "{{ postgres_data_dir }}/{{ item }}"
|
|
loop:
|
|
- pg_hba.conf
|
|
|
|
- name: Setup connection rules for users.
|
|
community.postgresql.postgresql_pg_hba:
|
|
dest: "{{ postgres_data_dir }}/pg_hba.conf"
|
|
contype: host
|
|
databases: "{{ item.1.database }}"
|
|
users: "{{ item.0.name }}"
|
|
source: "{{ item.1.source }}"
|
|
method: trust
|
|
loop: "{{ postgres_users | subelements('connection_rules', skip_missing=True) }}"
|
|
notify: Restart {{ role_name }} container
|
|
|
|
# # FIXME: Mount the pg_hba.conf -> Change the path outside of volume
|
|
# - name: Copy data files
|
|
# ansible.builtin.command: docker cp {{ postgres_data_dir }}/{{ item }} {{ postgres_hostname }}:/var/lib/postgresql/data/{{ item }}
|
|
# ignore_errors: true
|
|
# changed_when: false
|
|
# loop:
|
|
# - pg_hba.conf
|