# postgres ~~ roles/postgres/tasks/main.yml # postgresql database server --- - name: ensure postgres is installed for OpenBSD package: name=postgresql-server state=present when: ansible_distribution == "OpenBSD" - name: ensure postgres is installed package: name=postgresql state=present ignore_errors: true when: ansible_distribution != "OpenBSD" - name: ensure postgres group exists group: name="{{ postgres_group }}" state=present - name: ensure postgres user exists user: name: "{{ postgres_user }}" group: "{{ postgres_group }}" system: true state: present - name: ensure postgres directory exists file: path: "{{ postgres_dir }}" owner: "{{ postgres_user }}" group: "{{ postgres_group }}" mode: 0760 state: directory - name: delete default data dir if exists file: path=/var/postgresql state=absent when: postgres_dir != "/var/postgresql" - name: link postgres directory to default one file: src: "{{ postgres_dir }}" dest: "/var/postgresql" owner: "{{ postgres_user }}" group: "{{ postgres_group }}" state: link mode: 0760 when: postgres_dir != "/var/postgresql" - name: init postgres database shell: initdb -D "{{ postgres_dir }}/data/" -U postgres --auth=scram-sha-256 --pwprompt --encoding=UTF-8 --locale=xx_XX.UTF-8 args: chdir: "{{ postgres_dir }}" become: true become_user: "{{ postgres_user }}" register: result failed_when: result.rc != 0 and "exists but is not empty" not in result.stderr - name: enable and restart postgres service service: name: postgresql state: restarted enabled: true