From 04855031e0e3a74b98e59167ba5da91e077dab48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20Gon=C3=A7alves?= Date: Sun, 12 Dec 2021 16:47:23 +0000 Subject: roles: Add postgresql --- roles/postgres/defaults/main.yml | 5 ++++ roles/postgres/tasks/create_db.yml | 4 +++ roles/postgres/tasks/create_user.yml | 4 +++ roles/postgres/tasks/main.yml | 52 ++++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 roles/postgres/defaults/main.yml create mode 100644 roles/postgres/tasks/create_db.yml create mode 100644 roles/postgres/tasks/create_user.yml create mode 100644 roles/postgres/tasks/main.yml diff --git a/roles/postgres/defaults/main.yml b/roles/postgres/defaults/main.yml new file mode 100644 index 0000000..963e594 --- /dev/null +++ b/roles/postgres/defaults/main.yml @@ -0,0 +1,5 @@ +postgres_dir: /data/postgresql +postgres_default_dir: /var/postgresql +postgres_user: _postgresql +postgres_group: _postgresql +postgres_db_user: postgres diff --git a/roles/postgres/tasks/create_db.yml b/roles/postgres/tasks/create_db.yml new file mode 100644 index 0000000..9adb6ee --- /dev/null +++ b/roles/postgres/tasks/create_db.yml @@ -0,0 +1,4 @@ +- name: ensure miniflux database exists + shell: createdb -U postgres -O "{{ postgres_db_user }}" "{{ postgres_db_name }}" + register: result + failed_when: result.rc != 0 and "already exists" not in result.stderr diff --git a/roles/postgres/tasks/create_user.yml b/roles/postgres/tasks/create_user.yml new file mode 100644 index 0000000..123070d --- /dev/null +++ b/roles/postgres/tasks/create_user.yml @@ -0,0 +1,4 @@ +- name: ensure miniflux db user exists + shell: createuser -U postgres "{{ postgres_db_user }}" + register: result + failed_when: result.rc != 0 and "already exists" not in result.stderr diff --git a/roles/postgres/tasks/main.yml b/roles/postgres/tasks/main.yml new file mode 100644 index 0000000..d8fe000 --- /dev/null +++ b/roles/postgres/tasks/main.yml @@ -0,0 +1,52 @@ +- name: install postgres + package: + name: + - postgresql-server + - postgresql-contrib + state: present + +- name: create postgres directories + file: + path: "{{ postgres_dir }}/{{ item }}" + owner: "{{ postgres_user }}" + group: "{{ postgres_group }}" + mode: 0750 + state: directory + loop: + - "" + - "data" + +- name: delete default data dir if exists + file: + path: "{{ postgres_default_dir }}" + state: absent + when: postgres_dir != "/var/postgresql" + +- name: link postgres directory to default one + 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" + + # NOTE: this tasks needs `pipelining` set to `false` to work correctly +- name: init postgres database + command: + cmd: initdb -D "{{ postgres_dir }}/data/" -U "{{ postgres_db_user }}" --encoding=UTF-8 --locale=en_US.UTF-8 + chdir: "{{ postgres_dir }}" + register: result + become: true + become_user: "{{ postgres_user }}" + failed_when: + - result.rc != 0 + - "'exists but is not empty' not in result.stderr" + +- name: enable and restart postgres service + service: + name: postgresql + state: restarted + enabled: true -- cgit v1.2.3