blob: 618c0402c380ed00d68127cd7a1e931d53f69064 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
- import_role:
name: jail
tasks_from: jail_setup
- 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: 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: Reload postgresql
- name: Listen on all interfaces
lineinfile:
path: /var/db/postgres/data18/postgresql.conf
line: "listen_addresses = '*'"
regexp: "^listen_addresses"
notify: Reload postgresql
- name: Start postgres
service:
name: postgresql
state: started
- name: Flush handlers
meta: flush_handlers
- import_role:
name: jail
tasks_from: jail_launch
- 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 \"psql -c \\\"CREATE ROLE {{ item }} LOGIN PASSWORD '{{ pg_user_passwords[item] }}'\\\"\""
loop: "{{ pg_users }}"
register: _pg_user
changed_when: "'CREATE ROLE' in _pg_user.stdout"
no_log: true
- 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"
- name: Run database init SQL
shell: "su -l postgres -c \"psql -d {{ item.item.name }} -c \\\"{{ item.item.init }}\\\"\""
loop: "{{ _pg_db.results }}"
loop_control:
label: "{{ item.item.name }}"
when: item.changed and item.item.init is defined
|