From 87c123365855069cd80d426088b88be6aaf606c2 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Wed, 31 Mar 2021 17:18:58 +0200
Subject: [PATCH] manage extensions.

---
 tasks/manage_pg_db.yml | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/tasks/manage_pg_db.yml b/tasks/manage_pg_db.yml
index 4e681ad..c9ea35f 100644
--- a/tasks/manage_pg_db.yml
+++ b/tasks/manage_pg_db.yml
@@ -3,7 +3,7 @@
   become: True
   become_user: postgres
   postgresql_user: user={{ item.user }} password={{ item.pwd }} role_attr_flags={{ item.roles }} port={{ psql_db_port }} state={{ item.userstate | default('present') }}
-  with_items: '{{ psql_db_data | default(omit) }}'
+  with_items: '{{ psql_db_data | default([]) }}'
   when: item.roles is defined
   tags: [ 'postgresql', 'postgres', 'pg_db', 'pg_user' ]
 
@@ -11,7 +11,7 @@
   become: True
   become_user: postgres
   postgresql_db: db={{ item.name }} port={{ psql_db_port }} encoding={{ item.encoding }} owner={{ item.user }} template=template0 state={{ item.state | default('present') }}
-  with_items: '{{ psql_db_data | default(omit) }}'
+  with_items: '{{ psql_db_data | default([]) }}'
   when: item.managedb | default(True)
   tags: [ 'postgresql', 'postgres', 'pg_db' ]
 
@@ -27,10 +27,19 @@
     port: '{{ psql_db_port }}'
     state: "{{ item.userstate | default('present') }}"
     grant_option: "{{ item.grant_option | default('yes') }}"
-  with_items: '{{ psql_db_privs | default(omit) }}'
-  when: psql_db_privs is defined
+  with_items: '{{ psql_db_privs | default([]) }}'
   tags: [ 'postgresql', 'postgres', 'pg_db', 'pg_user', 'postgresql_privs' ]
 
+- name: Add postgres extensions to the databases, if needed
+  become: True
+  become_user: postgres
+  postgresql_ext: name={{ item.1 | default(omit) }} db={{ item.0.name }} port={{ psql_db_port }}
+  with_subelements:
+    - '{{ psql_db_extensions | default([]) }}'
+    - extensions
+  when: psql_db_extensions is defined
+  tags: [ 'postgresql', 'postgres', 'pg_extensions', 'pg_db' ]
+
 # - name: Add schemas to a database.
 #   become: True
 #   become_user: postgres