--- - name: install depencies packages ansible.builtin.package: name: - gpg - python3-psycopg2 tags: postgresql - import_tasks: repo.yml when: postgresql_use_official_repository - name: install packages ansible.builtin.package: name: - 'postgresql-{{ postgresql_version }}' tags: postgresql - name: copy config ansible.builtin.template: src: '{{ item }}.j2' dest: '/etc/postgresql/{{ postgresql_version }}/main/{{ item }}' owner: root group: root mode: 0644 loop: - postgresql.conf - pg_hba.conf notify: reload postgresql tags: postgresql - name: enable and start service ansible.builtin.service: name: 'postgresql@{{ postgresql_version }}-main' state: started enabled: true tags: postgresql - name: wait for service is up ansible.builtin.wait_for: port: 5432 tags: postgresql - name: manage databases community.general.postgresql_db: name: '{{ item.name }}' encoding: '{{ item.encoding|default("UTF-8") }}' state: '{{ item.state|default("present") }}' lc_collate: '{{ item.lc_collate|default("C.UTF-8") }}' lc_ctype: '{{ item.lc_ctype|default("C.UTF-8") }}' template: '{{ item.template|default("template0") }}' loop: '{{ postgresql_databases }}' become: true become_user: postgres when: postgresql_primary tags: postgresql - name: manage users community.general.postgresql_user: name: '{{ item.name }}' password: '{{ item.password }}' db: '{{ item.database }}' priv: '{{ item.privileges|join("/") }}' state: '{{ item.state|default("present") }}' loop: '{{ postgresql_users }}' loop_control: label: '{{ item.name }}/{{ item.database }}' become: true become_user: postgres when: postgresql_primary tags: postgresql