aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorPaul B <paul@bonaud.fr>2019-01-25 11:55:41 +0100
committerPaul B <paul@bonaud.fr>2019-01-29 11:42:40 +0100
commit4d626d5a5c05f4676c0a403929de775404f9e63c (patch)
treeec8f117f8368ce22a87e785362839c387a2e3c33
parent2bedf1bbf762903d955e4a76f674799a6acb2258 (diff)
downloadansible-postgresql-role-4d626d5a5c05f4676c0a403929de775404f9e63c.tar.gz
ansible-postgresql-role-4d626d5a5c05f4676c0a403929de775404f9e63c.tar.zst
ansible-postgresql-role-4d626d5a5c05f4676c0a403929de775404f9e63c.zip
feat(extensions): adds creation of extension on databases if needed
-rw-r--r--tasks/main.yml1
-rw-r--r--tasks/postgres-common-postinstall.yml14
-rw-r--r--tasks/postgres-database-extensions.yml23
-rw-r--r--tasks/postgres-database.yml7
4 files changed, 44 insertions, 1 deletions
diff --git a/tasks/main.yml b/tasks/main.yml
index 2fa7883..3d1892c 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -46,6 +46,7 @@
46- include: postgres-database.yml 46- include: postgres-database.yml
47 postgres_dbname={{ item.1.dbname }} 47 postgres_dbname={{ item.1.dbname }}
48 postgres_owner={{ item.1.owner }} 48 postgres_owner={{ item.1.owner }}
49 postgres_extensions={{ item.1.extensions|default([]) }}
49 postgres_port={{ item.0.port }} 50 postgres_port={{ item.0.port }}
50 with_subelements: 51 with_subelements:
51 - "{{ postgres_clusters }}" 52 - "{{ postgres_clusters }}"
diff --git a/tasks/postgres-common-postinstall.yml b/tasks/postgres-common-postinstall.yml
index 277fafd..715782c 100644
--- a/tasks/postgres-common-postinstall.yml
+++ b/tasks/postgres-common-postinstall.yml
@@ -15,13 +15,25 @@
15 src: /var/lib/postgresql/.ssh/id_rsa.pub 15 src: /var/lib/postgresql/.ssh/id_rsa.pub
16 register: db_server_pub_key 16 register: db_server_pub_key
17 17
18- name: Check if barman is installed on barman server
19 getent:
20 database: passwd
21 key: "barman"
22 delegate_to: "{{ postgres_barman_server_public|default(postgres_barman_server) }}"
23 when: postgres_barman_server is defined
24 register: barman_user_exists
25 ignore_errors: true
26 changed_when: false
27
18- name: Allow SSH access on barman server 28- name: Allow SSH access on barman server
19 authorized_key: 29 authorized_key:
20 user: "barman" 30 user: "barman"
21 key: "{{ db_server_pub_key['content']|b64decode }}" 31 key: "{{ db_server_pub_key['content']|b64decode }}"
22 state: present 32 state: present
23 delegate_to: "{{ postgres_barman_server_public|default(postgres_barman_server) }}" 33 delegate_to: "{{ postgres_barman_server_public|default(postgres_barman_server) }}"
24 when: postgres_barman_server is defined 34 when:
35 - postgres_barman_server is defined
36 - barman_user_exists is succeeded
25 37
26- name: Copy logrotate configuration for postgresql 38- name: Copy logrotate configuration for postgresql
27 template: src=logrotate-postgresql-common.j2 dest=/etc/logrotate.d/postgresql-common owner=root group=root mode=0644 39 template: src=logrotate-postgresql-common.j2 dest=/etc/logrotate.d/postgresql-common owner=root group=root mode=0644
diff --git a/tasks/postgres-database-extensions.yml b/tasks/postgres-database-extensions.yml
new file mode 100644
index 0000000..edc4e8d
--- /dev/null
+++ b/tasks/postgres-database-extensions.yml
@@ -0,0 +1,23 @@
1---
2- name: "Install required packages for 'postgres_ext' ansible module"
3 apt:
4 name:
5 - libpq-dev
6 - python-psycopg2
7
8- name: Install system dependencies of extensions
9 apt:
10 name: "{{ postgres_extension.apt_deps | default([]) }}"
11 cache_valid_time: 86400
12
13- name: "CREATE EXTENSION on database {{ postgres_dbname }}"
14 become: true
15 become_user: postgres
16 become_method: su
17 postgresql_ext:
18 name: "{{ postgres_extension_name }}"
19 db: "{{ postgres_dbname }}"
20 port: "{{ postgres_port }}"
21 loop: "{{ postgres_extension.names | default([]) }}"
22 loop_control:
23 loop_var: postgres_extension_name
diff --git a/tasks/postgres-database.yml b/tasks/postgres-database.yml
index c7b09a8..c3537ea 100644
--- a/tasks/postgres-database.yml
+++ b/tasks/postgres-database.yml
@@ -18,3 +18,10 @@
18 owner: "{{ postgres_owner }}" 18 owner: "{{ postgres_owner }}"
19 when: 19 when:
20 - postgres_up.rc == 0 20 - postgres_up.rc == 0
21
22- name: Create database extensions
23 include_tasks: postgres-database-extensions.yml
24 loop: "{{ postgres_extensions| default([]) }}"
25 loop_control:
26 loop_var: postgres_extension
27 when: postgres_up.rc == 0