ansible-role-postgresql/tasks/main.yml
2020-04-16 23:19:13 +02:00

64 lines
1.4 KiB
YAML

- 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 "+%s-%Y%M%d-%H%M.sql.gz")'
user: postgres
hour: 5,11,17,23
minute: 45
- name: add backup cleanup cronjob
cron:
name: db backup cleanup
job: 'find /opt/postgresbackup/* -mtime +9 -type f -exec rm {} \;'
special_time: daily
- name: flush handlers so postgres is ready before other roles try to use it
meta: flush_handlers