aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Gonçalves <me@rgoncalves.se>2021-12-12 16:47:23 +0000
committerRomain Gonçalves <me@rgoncalves.se>2021-12-12 16:47:23 +0000
commit04855031e0e3a74b98e59167ba5da91e077dab48 (patch)
treefd03eb9e7c04b5a422753174dccf7b43b1a0ff66
parentc7bce9fa368ac4f45e3ca45bc8a03cff547d9cd1 (diff)
downloadinfrastructure-04855031e0e3a74b98e59167ba5da91e077dab48.tar.gz
roles: Add postgresql
-rw-r--r--roles/postgres/defaults/main.yml5
-rw-r--r--roles/postgres/tasks/create_db.yml4
-rw-r--r--roles/postgres/tasks/create_user.yml4
-rw-r--r--roles/postgres/tasks/main.yml52
4 files changed, 65 insertions, 0 deletions
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
remember that computers suck.