---
- name: Set postgresql installation directory
  set_fact:
    psql_dir: '/etc/postgresql/{{ psql.version }}/main/'

- name: Install postgresql
  apt:
    update_cache: true
    name: postgresql
    state: present
  register: apt_result
  retries: 3
  until: apt_result is succeeded

- name: Ensure main postgresql directory exists
  file:
    path: '{{ psql_dir }}'
    state: directory
    owner: postgres
    group: postgres
    mode: 0755

- name: Ensure configuration directory exists
  file:
    path: '{{ psql_dir }}/conf.d'
    state: directory
    owner: postgres
    group: postgres
    mode: 0755

- name: Configuration of postgresql {{ psql.version }}
  template:
    src: postgresql/postgresql.conf.j2
    dest: '{{ psql_dir }}/postgresql.conf'
    mode: 0640
    owner: postgres
    group: postgres
  notify:
    - reload postgresql

- name: Master of configuration of postgresql {{ psql.version }}
  template:
    src: 'postgresql/{{ item }}.j2'
    dest: '{{ psql_dir }}/{{ item }}'
    mode: 0640
    owner: postgres
    group: postgres
  loop:
   - pg_hba.conf
   - pg_ident.conf
  notify:
    - reload postgresql
  when: 'not(psql.replica | default(False))'