- name: install postgres apt: pkg: - postgresql - python-psycopg2 - 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 dbs postgresql_db: name: "{{ item.key }}" become_user: postgres become: true with_dict: "{{ postgresql.dbs }}" - name: add postgresql user(s) postgresql_user: name: "{{ item.key }}" password: "{{ item.value }}" become_user: postgres become: true with_dict: "{{ postgresql.users }}" - name: add vacuum cronjob cron: name: db maintenance job: "/usr/bin/vacuumdb --all --analyze > /dev/null" user: postgres hour: 23 minute: 26 - name: add postgresql backup folder file: path: /opt/postgresbackup/ state: directory owner: postgres group: postgres mode: '750' - name: add backup cronjob for easier backup/restore cron: name: db backup job: '/usr/bin/pg_dumpall | gzip > /opt/postgresbackup/$(date "+\%Y\%m\%d-\%H\%M.sql.gz")' user: postgres hour: "*/4" minute: 45 - name: add backup cleanup cronjob cron: name: db backup cleanup job: 'find /opt/postgresbackup/* -mtime +3 -type f -exec rm {} \;' special_time: daily - name: flush handlers so postgres is ready before other roles try to use it meta: flush_handlers