aboutsummaryrefslogtreecommitdiffstats
path: root/roles/jails/02_postgres/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'roles/jails/02_postgres/tasks')
-rw-r--r--roles/jails/02_postgres/tasks/main.yml43
1 files changed, 43 insertions, 0 deletions
diff --git a/roles/jails/02_postgres/tasks/main.yml b/roles/jails/02_postgres/tasks/main.yml
index 2abdaff..12365d0 100644
--- a/roles/jails/02_postgres/tasks/main.yml
+++ b/roles/jails/02_postgres/tasks/main.yml
@@ -1,2 +1,45 @@
- import_role:
name: jail
+
+- name: Check if database is initialized
+ stat:
+ path: /var/db/postgres/data18/PG_VERSION
+ register: _pg_data
+
+- name: Initialize database
+ shell: /usr/local/etc/rc.d/postgresql initdb
+ when: not _pg_data.stat.exists
+
+- name: Enable postgresql
+ community.general.sysrc:
+ name: postgresql_enable
+ value: "YES"
+
+- name: Allow LAN connections in pg_hba.conf
+ lineinfile:
+ path: /var/db/postgres/data18/pg_hba.conf
+ line: "host all all {{ jail_lan_cidr }} scram-sha-256"
+ regexp: "^host.*all.*all.*scram-sha-256"
+ notify: Restart postgresql
+
+- name: Listen on all interfaces
+ lineinfile:
+ path: /var/db/postgres/data18/postgresql.conf
+ line: "listen_addresses = '*'"
+ regexp: "^listen_addresses"
+ notify: Restart postgresql
+
+- name: Flush handlers
+ meta: flush_handlers
+
+- name: Create database users
+ shell: "su -l postgres -c \"psql -tc \\\"SELECT 1 FROM pg_roles WHERE rolname='{{ item }}'\\\"\" | grep -q 1 || su -l postgres -c \"createuser {{ item }}\""
+ loop: "{{ pg_users }}"
+ register: _pg_user
+ changed_when: "'CREATE ROLE' in _pg_user.stdout"
+
+- name: Create databases
+ shell: "su -l postgres -c \"psql -tc \\\"SELECT 1 FROM pg_database WHERE datname='{{ item.name }}'\\\"\" | grep -q 1 || su -l postgres -c \"createdb -O {{ item.owner }} {{ item.name }}\""
+ loop: "{{ pg_databases }}"
+ register: _pg_db
+ changed_when: "'CREATE DATABASE' in _pg_db.stdout"