configpolicy/roles/postgresql-server/tasks/main.yml

147 lines
3.4 KiB
YAML

- name: restore postgresql data directory from backup
command: >-
{{ postgresql_restore_command }}
args:
creates: '{{ pgdata_dir }}/PG_VERSION'
when: postgresql_restore_command|d(none)
notify:
- create postgresql server recovery signal file
tags:
- restore
- name: ensure postgresql data directory exists
file:
path: '{{ pgdata_dir }}'
owner: postgres
group: postgres
mode: u=rwx,go=
state: directory
tags:
- initdb
- name: ensure postgresql database cluster is initialized
command:
runuser -u postgres -- initdb {{ pgdata_dir }}
args:
creates: '{{ pgdata_dir }}/PG_VERSION'
tags:
- initdb
- name: ensure default configuration files are removed from data directory
file:
path: '{{ pgdata_dir }}/{{ item }}'
state: absent
when: pgdata_dir != postgresql_config_dir
loop:
- postgresql.conf
- pg_hba.conf
- pg_ident.conf
tags:
- config
- name: ensure postgresql configuration directory exists
file:
path: '{{ postgresql_config_dir }}'
owner: root
group: postgres
mode: u=rwx,g=rx,o=
state: directory
when: postgresql_config_dir != pgdata_dir
tags:
- config
- name: ensure postgresql server is configured
template:
src: postgresql.conf.j2
dest: '{{ postgresql_config_dir }}/postgresql.conf'
owner: root
group: postgres
mode: u=rw,g=r,o=
notify: restart postgresql server
tags:
- config
- name: ensure postgresql identity mapping is configured
template:
src: pg_ident.conf.j2
dest: '{{ postgresql_config_dir }}/pg_ident.conf'
owner: root
group: postgres
mode: u=rw,g=r,o=
setype: postgresql_db_t
tags:
- config
- name: ensure postgresql host-based authentication is configured
template:
src: pg_hba.conf.j2
dest: '{{ postgresql_config_dir }}/pg_hba.conf'
owner: root
group: postgres
mode: u=rw,g=r,o=
setype: postgresql_db_t
notify: reload postgresql server
tags:
- config
- pg_hba
- name: ensure postgresql server standby signal file exists
file:
path: '{{ pgdata_dir }}/standby.signal'
state: >-
{{ 'touch' if postgresql_standby|d(false) else 'absent' }}
owner: root
group: root
mode: u=rw,go=r
tags:
- config
- name: ensure postgresql server certificate is installed
copy:
src: '{{ item }}'
dest: '{{ postgresql_config_dir }}/{{ item|basename }}'
owner: postgres
group: postgres
mode: u=rw,go=
with_fileglob: 'certs/postgresql/{{ inventory_hostname }}/*'
tags:
- cert
- name: ensure postgresql systemd unit drop-in directory exists
file:
path: /etc/systemd/system/postgresql.service.d
owner: root
group: root
state: directory
tags:
- systemd
- name: ensure postgresql systemd unit extension is configured
template:
src: pgdata.systemd.conf.j2
dest: /etc/systemd/system/postgresql.service.d/pgdata.conf
owner: root
group: root
notify:
- reload systemd
- restart postgresql server
tags:
- systemd
- name: ensure postgresql starts at boot
service:
name: postgresql
enabled: true
- name: flush handlers
meta: flush_handlers
- name: ensure postgresql server is running
service:
name: postgresql
state: started
- name: ensure firewall is configured for postgresql
firewalld:
service: postgresql
state: >-
{{ 'enabled' if postgresql_allow_remote else 'disabled' }}
permanent: true
immediate: true
when: host_uses_firewalld|d(true)
tags:
- firewalld