--- - name: Install needed packages become: true ansible.builtin.apt: name: - postgresql - postfix-pgsql - python3-psycopg2 - acl - name: Create postgresql users become: true become_user: postgres loop: - "{{ mailserver_database.admin_user }}" - "{{ mailserver_database.ro_user }}" community.postgresql.postgresql_user: name: "{{ item.name }}" state: present password: "{{ item.pwd }}" - name: Create postgresql database become: true become_user: postgres community.postgresql.postgresql_db: name: "{{ mailserver_database.db }}" owner: "{{ mailserver_database.admin_user.name }}" state: present - name: Upload postgresql tables script become: true become_user: postgres ansible.builtin.template: src: tables.sql.j2 dest: ~/mailserver_tables.sql mode: "600" notify: Create postgresql tables - name: Make sure tables are created before setting permissions ansible.builtin.meta: flush_handlers - name: Set privileges for postgresql RO user become: true become_user: postgres community.postgresql.postgresql_privs: database: "{{ mailserver_database.db }}" roles: "{{ mailserver_database.ro_user.name }}" privs: select objs: ALL_IN_SCHEMA state: present - name: Upload mailserver-manage.sh script become: true ansible.builtin.template: src: mailserver-manage.sh.j2 dest: /usr/local/bin/mailserver-manage.sh mode: "700"