- name: install postgres apt: pkg: - postgresql - postgresql-contrib - python3-psycopg2 - name: generate pg_hba template: src: pg_hba.conf.j2 dest: "/etc/postgresql/{{ pg_version }}/main/pg_hba.conf" owner: postgres group: postgres mode: 0640 notify: - restart postgres - name: add postgresql user(s) community.postgresql.postgresql_user: name: "{{ item.key }}" password: "{{ item.value }}" become_user: postgres become: true with_dict: "{{ postgresql.users }}" - name: add postgresql dbs community.postgresql.postgresql_db: name: "{{ item.key }}" owner: "{{ item.value.owner|d(omit) }}" encoding: "{{ item.value.encoding|d(omit) }}" template: "{{ item.value.template|d(omit) }}" lc_collate: "{{ item.value.lc_collate|d(omit) }}" lc_ctype: "{{ item.value.lc_ctype|d(omit) }}" become_user: postgres become: true with_dict: "{{ postgresql.dbs }}" - name: add vacuum cronjob cron: name: db maintenance job: "/usr/bin/vacuumdb --all --analyze > /dev/null" user: postgres hour: "23" minute: "26" - include_tasks: backup.yml when: - postgresql.backup.enable - name: flush handlers so postgres is ready before other roles try to use it meta: flush_handlers