--- - name: install postgres ansible.builtin.package: name: - postgresql-server - postgresql-contrib state: present - name: create postgres directories ansible.builtin.file: path: "{{ postgres_dir }}/{{ item }}" owner: "{{ postgres_user }}" group: "{{ postgres_group }}" mode: 0750 state: directory loop: - "" - "data" - name: delete default data dir if exists ansible.builtin.file: path: "{{ postgres_default_dir }}" state: absent when: postgres_dir != "/var/postgresql" - name: link postgres directory to default one ansible.builtin.file: src: "{{ postgres_dir }}" dest: "{{ postgres_default_dir }}" owner: "{{ postgres_user }}" group: "{{ postgres_group }}" state: link mode: 0750 follow: false when: postgres_dir != "/var/postgresql" - name: init postgres database # noqa: no-changed-when ansible.builtin.shell: cmd: | su "{{ postgres_user }}" \ -c 'initdb -D "{{ postgres_dir }}/data/" -U "{{ postgres_db_user }}" --encoding=UTF-8 --locale=en_US.UTF-8' chdir: "{{ postgres_dir }}" register: result failed_when: - result.rc != 0 - "'exists but is not empty' not in result.stderr" - name: enable and restart postgres service ansible.builtin.service: name: postgresql state: restarted enabled: true