--- - 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