Files
Ansible-Build/roles/postgres/tasks/postgres_users.yml
T
2024-10-28 16:52:32 +01:00

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