From 38b332ae2aaa07fa0eeb5708f4ea51e7818f3a79 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Wed, 6 Jul 2016 14:35:38 +0200
Subject: [PATCH 01/34] library/roles/python-env: Simple role to manage the pip
 and deb pkgs python modules installation.

---
 python-env/defaults/main.yml | 11 +++++++++++
 python-env/tasks/main.yml    | 21 +++++++++++++++++++++
 2 files changed, 32 insertions(+)
 create mode 100644 python-env/defaults/main.yml
 create mode 100644 python-env/tasks/main.yml

diff --git a/python-env/defaults/main.yml b/python-env/defaults/main.yml
new file mode 100644
index 00000000..e45d9765
--- /dev/null
+++ b/python-env/defaults/main.yml
@@ -0,0 +1,11 @@
+---
+py_env_pkgs_state: installed
+py_env_site: False
+py_env_basic_pkgs:
+  - python-pip
+
+py_env_dpkg:
+
+py_pip_deps:
+
+py_env_pip_pkgs:
diff --git a/python-env/tasks/main.yml b/python-env/tasks/main.yml
new file mode 100644
index 00000000..c71f7311
--- /dev/null
+++ b/python-env/tasks/main.yml
@@ -0,0 +1,21 @@
+---
+- name: Install python pip
+  apt: name={{ item }} state={{ py_env_pkgs_state }}
+  with_items: py_env_basic_pkgs
+  tags: [ "python", "py_env" ]
+
+- name: Install python deb packages
+  apt: name={{ item }} state={{ py_env_pkgs_state }}
+  with_items: '{{ py_env_dpkg | default([]) }}'
+  tags: [ "python", "py_env" ]
+
+- name: Install deb packages needed to compile the pip modules
+  apt: name={{ item }} state={{ py_env_pkgs_state }}
+  with_items: '{{ py_pip_deps | default([]) }}'
+  tags: [ "python", "py_env" ]
+
+- name: Install a list of pip packages
+  pip: name={{ item }} virtualenv={{ py_env_env_base_dir }}
+  with_items: '{{ py_env_pip_pkgs | default ()[] }}'
+  tags: [ "python", "py_env" ]
+

From dd968c63647c11071a7cba221eb2b2902db08434 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Wed, 6 Jul 2016 14:44:04 +0200
Subject: [PATCH 02/34] library/roles/python-env/tasks/main.yml: Update the apt
 cache if needed.

---
 python-env/tasks/main.yml | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/python-env/tasks/main.yml b/python-env/tasks/main.yml
index c71f7311..b60495dd 100644
--- a/python-env/tasks/main.yml
+++ b/python-env/tasks/main.yml
@@ -1,21 +1,20 @@
 ---
-- name: Install python pip
-  apt: name={{ item }} state={{ py_env_pkgs_state }}
-  with_items: py_env_basic_pkgs
-  tags: [ "python", "py_env" ]
+- block:
+    
+    - name: Install python pip
+      apt: name={{ item }} state={{ py_env_pkgs_state }} update_cache=yes
+      with_items: '{{ py_env_basic_pkgs }}'
 
-- name: Install python deb packages
-  apt: name={{ item }} state={{ py_env_pkgs_state }}
-  with_items: '{{ py_env_dpkg | default([]) }}'
-  tags: [ "python", "py_env" ]
+    - name: Install python deb packages
+      apt: name={{ item }} state={{ py_env_pkgs_state }} update_cache=yes cache_valid_time=600
+      with_items: '{{ py_env_dpkg | default([]) }}'
 
-- name: Install deb packages needed to compile the pip modules
-  apt: name={{ item }} state={{ py_env_pkgs_state }}
-  with_items: '{{ py_pip_deps | default([]) }}'
-  tags: [ "python", "py_env" ]
+    - name: Install deb packages needed to compile the pip modules
+      apt: name={{ item }} state={{ py_env_pkgs_state }}  update_cache=yes cache_valid_time=600
+      with_items: '{{ py_pip_deps | default([]) }}'
 
-- name: Install a list of pip packages
-  pip: name={{ item }} virtualenv={{ py_env_env_base_dir }}
-  with_items: '{{ py_env_pip_pkgs | default ()[] }}'
-  tags: [ "python", "py_env" ]
+    - name: Install a list of pip packages
+      pip: name={{ item }} virtualenv={{ py_env_env_base_dir }}
+      with_items: '{{ py_env_pip_pkgs | default ()[] }}'
 
+  tags: [ "python", "py_env" ]

From 2b8340c81e525ccbd571498b9b0112a39dde1af4 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Wed, 6 Jul 2016 14:44:28 +0200
Subject: [PATCH 03/34] library/roles/python-env/tasks/main.yml: Update the apt
 cache if needed.

---
 python-env/tasks/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/python-env/tasks/main.yml b/python-env/tasks/main.yml
index b60495dd..d2c800c5 100644
--- a/python-env/tasks/main.yml
+++ b/python-env/tasks/main.yml
@@ -2,7 +2,7 @@
 - block:
     
     - name: Install python pip
-      apt: name={{ item }} state={{ py_env_pkgs_state }} update_cache=yes
+      apt: name={{ item }} state={{ py_env_pkgs_state }} update_cache=yes cache_valid_time=600
       with_items: '{{ py_env_basic_pkgs }}'
 
     - name: Install python deb packages

From 08ca0889168fde80c357854ebb3c672054ef08b4 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@sevenseas.org>
Date: Wed, 6 Jul 2016 15:12:15 +0200
Subject: [PATCH 04/34] library/roles/python-env: Fix the variables handling

---
 python-env/defaults/main.yml | 3 +++
 python-env/tasks/main.yml    | 4 ++--
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/python-env/defaults/main.yml b/python-env/defaults/main.yml
index e45d9765..d741e79c 100644
--- a/python-env/defaults/main.yml
+++ b/python-env/defaults/main.yml
@@ -5,7 +5,10 @@ py_env_basic_pkgs:
   - python-pip
 
 py_env_dpkg:
+  -
 
 py_pip_deps:
+  -
 
 py_env_pip_pkgs:
+  -
diff --git a/python-env/tasks/main.yml b/python-env/tasks/main.yml
index d2c800c5..8efe3e2d 100644
--- a/python-env/tasks/main.yml
+++ b/python-env/tasks/main.yml
@@ -14,7 +14,7 @@
       with_items: '{{ py_pip_deps | default([]) }}'
 
     - name: Install a list of pip packages
-      pip: name={{ item }} virtualenv={{ py_env_env_base_dir }}
-      with_items: '{{ py_env_pip_pkgs | default ()[] }}'
+      pip: name={{ item }}
+      with_items: '{{ py_env_pip_pkgs | default ([]) }}'
 
   tags: [ "python", "py_env" ]

From 41b8687fee0db683f9614400b1d9008f8ec17cca Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Wed, 6 Jul 2016 15:19:03 +0200
Subject: [PATCH 05/34] library/roles/python-virtualenv: Ansible 2
 compatibility.

---
 python-virtualenv/defaults/main.yml | 10 ++---
 python-virtualenv/tasks/main.yml    | 60 +++++++++++++----------------
 2 files changed, 32 insertions(+), 38 deletions(-)

diff --git a/python-virtualenv/defaults/main.yml b/python-virtualenv/defaults/main.yml
index 0f7833d9..e7576240 100644
--- a/python-virtualenv/defaults/main.yml
+++ b/python-virtualenv/defaults/main.yml
@@ -5,10 +5,10 @@ py_virtenv_pkgs:
   - python-pip
   - python-virtualenv
 
-# py_virtenv_pip_pkgs:
-#   - pip_pkg_foo
-#   - pip_pkg_bar
+py_virtenv_pip_pkgs:
+  -
 
 # py_virtenv_pip_requirements: "/tmp/foo/requirements.txt"
-
-py_virtenv_env_base_dir: "/tmp/foo"
+#
+# py_virtenv_env_base_dir: "/tmp/foo"
+py_virtenv_env_base_dir:
diff --git a/python-virtualenv/tasks/main.yml b/python-virtualenv/tasks/main.yml
index efc6bbad..2474b170 100644
--- a/python-virtualenv/tasks/main.yml
+++ b/python-virtualenv/tasks/main.yml
@@ -1,40 +1,34 @@
 ---
-- name: Install the python virtualenv packages
-  apt: name={{ item }} state={{ py_virtenv_pkgs_state }}
-  with_items: py_virtenv_pkgs
-  tags: [ "python", "py_virtenv" ]
+- block:
+    
+    - name: Install the python virtualenv packages
+      apt: name={{ item }} state={{ py_virtenv_pkgs_state }}
+      with_items: '{{ py_virtenv_pkgs }}'
 
-- name: Create the virtenv environments.
-  command: virtualenv {{ py_virtenv_env_base_dir }}
-  tags: [ "python", "py_virtenv" ]
+    - name: Create the virtenv environments.
+      command: virtualenv {{ py_virtenv_env_base_dir }}
+      when: '{{ py_virtenv_env_base_dir }} != ""'
 
-- name: Install a list of pip packages inside the virtualenv, inherit the global site-packages
-  pip: name={{ item }} virtualenv={{ py_virtenv_env_base_dir }} virtualenv_site_packages=yes
-  with_items: py_virtenv_pip_pkgs
-  when:
-    - py_virtenv_pip_pkgs is defined
-    - py_virtenv_site
-  tags: [ "python", "py_virtenv" ]
+    - name: Install a list of pip packages inside the virtualenv, inherit the global site-packages
+      pip: name={{ item }} virtualenv={{ py_virtenv_env_base_dir }} virtualenv_site_packages=yes
+      with_items: '{{ py_virtenv_pip_pkgs | default ([]) }}'
+      when: py_virtenv_site
 
-- name: Install a list of pip packages inside the virtualenv
-  pip: name={{ item }} virtualenv={{ py_virtenv_env_base_dir }}
-  with_items: py_virtenv_pip_pkgs
-  when:
-    - py_virtenv_pip_pkgs is defined
-    - not py_virtenv_site
-  tags: [ "python", "py_virtenv" ]
+    - name: Install a list of pip packages inside the virtualenv
+      pip: name={{ item }} virtualenv={{ py_virtenv_env_base_dir }}
+      with_items: '{{ py_virtenv_pip_pkgs | default ([]) }}'
+      when: not py_virtenv_site
 
-- name: Install a list of pip packages inside the virtualenv from a requirements.txt file, inherit the global site-packages
-  pip: requirements={{ py_virtenv_pip_requirements }} virtualenv={{ py_virtenv_env_base_dir }} virtualenv_site_packages=yes
-  when:
-    - py_virtenv_pip_requirements is defined
-    - py_virtenv_site
-  tags: [ "python", "py_virtenv" ]
+    - name: Install a list of pip packages inside the virtualenv from a requirements.txt file, inherit the global site-packages
+      pip: requirements={{ py_virtenv_pip_requirements }} virtualenv={{ py_virtenv_env_base_dir }} virtualenv_site_packages=yes
+      when: 
+        - py_virtenv_pip_requirements is defined
+        - py_virtenv_site
 
-- name: Install a list of pip packages inside the virtualenv from a requirements.txt file
-  pip: requirements={{ py_virtenv_pip_requirements }} virtualenv={{ py_virtenv_env_base_dir }}
-  when:
-    - py_virtenv_pip_requirements is defined
-    - not py_virtenv_site
-  tags: [ "python", "py_virtenv" ]
+    - name: Install a list of pip packages inside the virtualenv from a requirements.txt file
+      pip: requirements={{ py_virtenv_pip_requirements }} virtualenv={{ py_virtenv_env_base_dir }}
+      when:
+        - py_virtenv_pip_requirements is defined
+        - not py_virtenv_site
 
+  tags: [ "python", "py_virtenv" ]

From 4a90dfd9b086c78d53f7b66f37e74ff5604c594a Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Wed, 6 Jul 2016 15:30:08 +0200
Subject: [PATCH 06/34] library/roles/R/tasks/r-installation.yml: Add a tag for
 the R repository key.

---
 R/tasks/r-installation.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/R/tasks/r-installation.yml b/R/tasks/r-installation.yml
index b7cc76a4..c46dbf5b 100644
--- a/R/tasks/r-installation.yml
+++ b/R/tasks/r-installation.yml
@@ -1,7 +1,7 @@
 ---
 - name: Manage the cran repository key
   apt_key: id=E084DAB9 keyserver=keyserver.ubuntu.com state={{ r_install_cran_repo }}
-  tags: [ 'r_software', 'r_repo' ]
+  tags: [ 'r_software', 'r_repo', 'r_repo_key' ]
 
 - name: Manage the cran repository definition
   apt_repository: repo='deb http://cran.rstudio.com/bin/linux/ubuntu {{ ansible_distribution_release }}/' state={{ r_install_cran_repo }} update_cache=yes

From 3376bc30311f15d8c3bea880d0459304c81f59de Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Thu, 7 Jul 2016 11:20:37 +0200
Subject: [PATCH 07/34] library/roles/R/tasks/r-installation.yml: add a new
 tag.

---
 R/tasks/r-installation.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/R/tasks/r-installation.yml b/R/tasks/r-installation.yml
index c46dbf5b..f7fef965 100644
--- a/R/tasks/r-installation.yml
+++ b/R/tasks/r-installation.yml
@@ -41,7 +41,7 @@
   apt: pkg={{ item }} state={{ r_packages_state }} update_cache=yes force=yes
   with_items: '{{ r_distribution_required_packages | default([]) }}'
   when: r_needs_additional_distro_pkgs
-  tags: [ 'r_software', 'r_pkg' ]
+  tags: [ 'r_software', 'r_pkg', 'r_deps' ]
   
 - name: Ensure that the R packages sources directory exists
   file: dest={{ r_source_plugins_dest_dir }} state=directory owner=root group=root

From 965d6bf6aede830a1b714598f6d3ddd0f2fd1705 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Thu, 7 Jul 2016 17:39:27 +0200
Subject: [PATCH 08/34] library/roles/ubuntu-deb-general/defaults/main.yml:
 Install xmlstarlet. library/roles/smartgears: Change the default versions to
 the new production ones.
 library/roles/smartgears/smartgears/tasks/smartgears-app.yml: Task that sets
 the loglevel. The default is WARN.

---
 smartgears/generic_worker/defaults/main.yml    | 4 +---
 smartgears/smart_executor/defaults/main.yml    | 4 +---
 smartgears/smartgears/defaults/main.yml        | 6 +++---
 smartgears/smartgears/tasks/smartgears-app.yml | 8 ++++++++
 ubuntu-deb-general/defaults/main.yml           | 1 +
 5 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/smartgears/generic_worker/defaults/main.yml b/smartgears/generic_worker/defaults/main.yml
index 757ee673..11952b74 100644
--- a/smartgears/generic_worker/defaults/main.yml
+++ b/smartgears/generic_worker/defaults/main.yml
@@ -1,9 +1,7 @@
 ---
 generic_worker_install: False
 
-#smart_generic_worker_plugin_ver: 1.0.1-3.9.0
-#smart_generic_worker_plugin_ver: 1.0.2-3.10.1
-smart_generic_worker_plugin_ver: 1.0.3-3.11.0-128830
+smart_generic_worker_plugin_ver: 1.0.3-4.0.0-128830
 smart_generic_worker_plugin_name: 'smart-generic-worker-{{ smart_generic_worker_plugin_ver }}-jar-with-dependencies.jar'
 smart_generic_worker_plugin_url: 'http://maven.research-infrastructures.eu/nexus/content/repositories/{{ gcube_repository }}/org/gcube/dataanalysis/smart-generic-worker/{{ smart_generic_worker_plugin_ver }}/{{ smart_generic_worker_plugin_name }}'
 
diff --git a/smartgears/smart_executor/defaults/main.yml b/smartgears/smart_executor/defaults/main.yml
index 83fa19a9..a522af70 100644
--- a/smartgears/smart_executor/defaults/main.yml
+++ b/smartgears/smart_executor/defaults/main.yml
@@ -1,9 +1,7 @@
 ---
 smart_executor_install: False
 
-#smart_executor_version: 1.2.0-3.9.0
-#smart_executor_version: 1.3.0-3.10.1
-smart_executor_version: 1.3.0-3.11.0-128844
+smart_executor_version: 1.3.0-4.0.0-128844
 smart_executor_name: smart-executor
 smart_executor_file: '{{ smart_executor_name }}-{{ smart_executor_version }}.war'
 smart_executor_url: 'http://maven.research-infrastructures.eu/nexus/content/repositories/{{ gcube_repository }}/org/gcube/vremanagement/smart-executor/{{ smart_executor_version }}/{{ smart_executor_file }}'
diff --git a/smartgears/smartgears/defaults/main.yml b/smartgears/smartgears/defaults/main.yml
index 9ddaba88..27e820c4 100644
--- a/smartgears/smartgears/defaults/main.yml
+++ b/smartgears/smartgears/defaults/main.yml
@@ -15,9 +15,7 @@ smartgears_user: '{{ d4science_user }}'
 smartgears_user_home: '{{ d4science_user_home }}'
 smartgears_instance_path: '{{ smartgears_user_home }}/tomcat'
 smartgears_install_path: '{{ smartgears_user_home }}/SmartGears'
-#smartgears_distribution_version: 1.2.6-3.10.0
-#smartgears_distribution_version: 1.2.7-3.10.1
-smartgears_distribution_version: 1.2.7-3.11.0-125799
+smartgears_distribution_version: 1.2.8-4.0.0-129615
 smartgears_file: 'smartgears-distribution-{{ smartgears_distribution_version }}.tar.gz'
 smartgears_url: 'http://maven.research-infrastructures.eu/nexus/content/repositories/{{ gcube_repository }}/org/gcube/distribution/smartgears-distribution/{{ smartgears_distribution_version }}/{{ smartgears_file }}'
 smartgears_mode: online
@@ -31,6 +29,8 @@ smartgears_location: pisa
 smartgears_http_port: 9000
 smartgears_service_name: 'tomcat-instance-{{ smartgears_http_port }}'
 
+smartgears_loglevel: WARN
+
 # The iptables rules use this
 http_port: '{{ smartgears_http_port }}'
 
diff --git a/smartgears/smartgears/tasks/smartgears-app.yml b/smartgears/smartgears/tasks/smartgears-app.yml
index c9b6868e..7afaefb0 100644
--- a/smartgears/smartgears/tasks/smartgears-app.yml
+++ b/smartgears/smartgears/tasks/smartgears-app.yml
@@ -61,6 +61,14 @@
   notify: Restart smartgears 
   tags: [ 'smartgears', 'smartgears_conf', 'tomcat' ]
 
+- name: Change the smartgears log level
+  become: True
+  become_user: '{{ d4science_user }}'
+  shell: LOGLEVEL=$( xmlstarlet sel -t -v "/configuration/logger/@level"  {{ item.user_home }}/tomcat/lib/logback.xml | grep {{ smartgears_loglevel }} ) ; [ $? -ne 0 ] && xmlstarlet ed -u "/configuration/logger[@level]/@level" -v {{ smartgears_loglevel }} {{ item.user_home }}/tomcat/lib/logback.xml > {{ item.user_home }}/tomcat/lib/logback.xml.new ; mv {{ item.user_home }}/tomcat/lib/logback.xml.new {{ item.user_home }}/tomcat/lib/logback.xml
+  with_items: '{{ tomcat_m_instances }}'
+  notify: Restart smartgears 
+  tags: [ 'smartgears', 'tomcat', 'smartgears_loglevel' ]
+
 - name: Remove some wrong symbolic links created by the install/upgrade script
   file: dest={{ smartgears_install_path }}/state state=absent
   with_items:
diff --git a/ubuntu-deb-general/defaults/main.yml b/ubuntu-deb-general/defaults/main.yml
index 18f613b6..11377ac1 100644
--- a/ubuntu-deb-general/defaults/main.yml
+++ b/ubuntu-deb-general/defaults/main.yml
@@ -27,6 +27,7 @@ common_packages:
   - sudo
   - apt-transport-https
   - nano
+  - xmlstarlet
 
 # Set this variable in your playbook
 # additional_packages:

From 6aed2db7a27aab8dfc328788b816a477bc3a2c53 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 8 Jul 2016 16:31:17 +0200
Subject: [PATCH 09/34] library/roles/foreman/defaults/main.yml: Fix the
 foreman repository definition.

---
 foreman/defaults/main.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/foreman/defaults/main.yml b/foreman/defaults/main.yml
index e3839b89..8e18b3d3 100644
--- a/foreman/defaults/main.yml
+++ b/foreman/defaults/main.yml
@@ -2,8 +2,8 @@
 # foreman PKG state: latest, installed, absent
 foreman_pkg_state: latest
 foreman_repos:
-  - 'deb http://deb.theforeman.org/ trusty 1.10'
-  - 'deb http://deb.theforeman.org/ plugins 1.10'
+  - 'deb http://deb.theforeman.org/ {{ ansible_distribution }} stable'
+  - 'deb http://deb.theforeman.org/ plugins stable'
 
 foreman_repo_key: 'http://deb.theforeman.org/pubkey.gpg'
 

From ac277cb6afadbd50e30a382af310d24b59d591c8 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 8 Jul 2016 16:43:11 +0200
Subject: [PATCH 10/34] 
 library/roles/smartgears/smartgears/tasks/smartgears-app.yml: Fix the command
 that sets the logback log level.

---
 smartgears/smartgears/tasks/smartgears-app.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/smartgears/smartgears/tasks/smartgears-app.yml b/smartgears/smartgears/tasks/smartgears-app.yml
index 7afaefb0..9d463285 100644
--- a/smartgears/smartgears/tasks/smartgears-app.yml
+++ b/smartgears/smartgears/tasks/smartgears-app.yml
@@ -64,7 +64,7 @@
 - name: Change the smartgears log level
   become: True
   become_user: '{{ d4science_user }}'
-  shell: LOGLEVEL=$( xmlstarlet sel -t -v "/configuration/logger/@level"  {{ item.user_home }}/tomcat/lib/logback.xml | grep {{ smartgears_loglevel }} ) ; [ $? -ne 0 ] && xmlstarlet ed -u "/configuration/logger[@level]/@level" -v {{ smartgears_loglevel }} {{ item.user_home }}/tomcat/lib/logback.xml > {{ item.user_home }}/tomcat/lib/logback.xml.new ; mv {{ item.user_home }}/tomcat/lib/logback.xml.new {{ item.user_home }}/tomcat/lib/logback.xml
+  shell: LOGLEVEL=$( xmlstarlet sel -t -v "/configuration/logger/@level"  {{ item.user_home }}/tomcat/lib/logback.xml | grep {{ smartgears_loglevel }} ) ; [ $? -ne 0 ] && xmlstarlet ed -u "/configuration/logger[@level]/@level" -v {{ smartgears_loglevel }} {{ item.user_home }}/tomcat/lib/logback.xml > {{ item.user_home }}/tomcat/lib/logback.xml.new ; [ -f {{ item.user_home }}/tomcat/lib/logback.xml.new ] && mv {{ item.user_home }}/tomcat/lib/logback.xml.new {{ item.user_home }}/tomcat/lib/logback.xml
   with_items: '{{ tomcat_m_instances }}'
   notify: Restart smartgears 
   tags: [ 'smartgears', 'tomcat', 'smartgears_loglevel' ]

From c787b44fc4cdeff174b28c827204ed6c2fa8213b Mon Sep 17 00:00:00 2001
From: Roberto Cirillo <roberto.cirillo@isti.cnr.it>
Date: Fri, 8 Jul 2016 17:23:49 +0200
Subject: [PATCH 11/34] 
 ../library/roles/smartgears/smartgears/tasks/smartgears-app.yml fix change
 loglevel

---
 smartgears/smartgears/tasks/smartgears-app.yml      |  8 ++++++--
 .../templates/change-logback-loglevel.sh.j2         | 13 +++++++++++++
 2 files changed, 19 insertions(+), 2 deletions(-)
 create mode 100644 smartgears/smartgears/templates/change-logback-loglevel.sh.j2

diff --git a/smartgears/smartgears/tasks/smartgears-app.yml b/smartgears/smartgears/tasks/smartgears-app.yml
index 9d463285..aa0184fd 100644
--- a/smartgears/smartgears/tasks/smartgears-app.yml
+++ b/smartgears/smartgears/tasks/smartgears-app.yml
@@ -61,11 +61,15 @@
   notify: Restart smartgears 
   tags: [ 'smartgears', 'smartgears_conf', 'tomcat' ]
 
+- name: Install the script that manages the smartgears loglevel
+  template: src=change-logback-loglevel.sh.j2 dest=/usr/local/bin/change-logback-loglevel owner=root group=root mode=0755
+  with_items: '{{ tomcat_m_instances }}'
+  tags: [ 'smartgears', 'smartgears_loglevel', 'tomcat' ]
+
 - name: Change the smartgears log level
   become: True
   become_user: '{{ d4science_user }}'
-  shell: LOGLEVEL=$( xmlstarlet sel -t -v "/configuration/logger/@level"  {{ item.user_home }}/tomcat/lib/logback.xml | grep {{ smartgears_loglevel }} ) ; [ $? -ne 0 ] && xmlstarlet ed -u "/configuration/logger[@level]/@level" -v {{ smartgears_loglevel }} {{ item.user_home }}/tomcat/lib/logback.xml > {{ item.user_home }}/tomcat/lib/logback.xml.new ; [ -f {{ item.user_home }}/tomcat/lib/logback.xml.new ] && mv {{ item.user_home }}/tomcat/lib/logback.xml.new {{ item.user_home }}/tomcat/lib/logback.xml
-  with_items: '{{ tomcat_m_instances }}'
+  shell: /usr/local/bin/change-logback-loglevel
   notify: Restart smartgears 
   tags: [ 'smartgears', 'tomcat', 'smartgears_loglevel' ]
 
diff --git a/smartgears/smartgears/templates/change-logback-loglevel.sh.j2 b/smartgears/smartgears/templates/change-logback-loglevel.sh.j2
new file mode 100644
index 00000000..2ddebe2c
--- /dev/null
+++ b/smartgears/smartgears/templates/change-logback-loglevel.sh.j2
@@ -0,0 +1,13 @@
+#!/bin/bash
+
+RETVAL=
+LOGLEVEL=$( xmlstarlet sel -t -v "/configuration/logger/@level"  {{ item.user_home }}/tomcat/lib/logback.xml | grep {{ smartgears_loglevel }} )
+RETVAL=$?
+
+if [ $RETVAL -ne 0 ] ; then
+    xmlstarlet ed -u "/configuration/logger[@level]/@level" -v {{ smartgears_loglevel }} {{ item.user_home }}/tomcat/lib/logback.xml > {{ item.user_home }}/tomcat/lib/logback.xml.new
+    /bin/mv {{ item.user_home }}/tomcat/lib/logback.xml.new {{ item.user_home }}/tomcat/lib/logback.xml
+fi
+
+exit 0
+

From b02841191c084e459c9b459c973ddd844ae931e6 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 8 Jul 2016 17:38:13 +0200
Subject: [PATCH 12/34] 
 library/roles/smartgears/smartgears/tasks/smartgears-app.yml: do not restart
 smartgears after running the log level management script: we need a way to
 know when a change was performed.

---
 smartgears/smartgears/tasks/smartgears-app.yml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/smartgears/smartgears/tasks/smartgears-app.yml b/smartgears/smartgears/tasks/smartgears-app.yml
index aa0184fd..afe26e13 100644
--- a/smartgears/smartgears/tasks/smartgears-app.yml
+++ b/smartgears/smartgears/tasks/smartgears-app.yml
@@ -70,7 +70,6 @@
   become: True
   become_user: '{{ d4science_user }}'
   shell: /usr/local/bin/change-logback-loglevel
-  notify: Restart smartgears 
   tags: [ 'smartgears', 'tomcat', 'smartgears_loglevel' ]
 
 - name: Remove some wrong symbolic links created by the install/upgrade script

From 883a8b0826e25b5bc19394150d73a9b9d00e36c1 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Mon, 11 Jul 2016 17:57:45 +0200
Subject: [PATCH 13/34] library/roles/d4s_user_services_perms: Manage the
 manually installed tomcat, providing a logrotate rule for catalina and a
 sudoers configuration that permits to manage the instance by the unprivileged
 user.

---
 d4s_user_services_perms/defaults/main.yml     | 13 +++++++
 .../tasks/d4s-tomcat-node.yml                 | 34 +++++++++++++++----
 .../templates/catalina-logrotate.j2           | 20 +++++++++++
 .../templates/startContainer.sh.j2            |  4 +++
 .../templates/stopContainer.sh.j2             |  4 +++
 .../templates/tomcat-sudoers.j2               |  2 +-
 6 files changed, 70 insertions(+), 7 deletions(-)
 create mode 100644 d4s_user_services_perms/templates/catalina-logrotate.j2

diff --git a/d4s_user_services_perms/defaults/main.yml b/d4s_user_services_perms/defaults/main.yml
index 214c9185..e8d9279e 100644
--- a/d4s_user_services_perms/defaults/main.yml
+++ b/d4s_user_services_perms/defaults/main.yml
@@ -4,6 +4,19 @@ d4science_user_create_home: True
 d4science_user_home: '/home/{{ d4science_user }}'
 d4science_user_shell: /bin/bash
 
+d4science_sudoers_commands:
+  - /etc/init.d/tomcat-instance-*
+
 d4science_tomcat_options_files:
   - '/etc/default/tomcat-instance-{{ item.0.http_port }}'
   - '/etc/default/tomcat-instance-{{ item.0.http_port }}.local'
+
+d4science_manual_tomcat_inst_dir: '{{ d4science_user_home }}/tomcat'
+d4science_manual_tomcat_log_dir: '{{ d4science_manual_tomcat_inst_dir }}/logs'
+d4science_manual_tomcat_rotate_copies: 15
+d4science_manual_tomcat_rotate_access_log: False
+d4science_manual_tomcat_access_log: localhost_access.log
+
+d4science_tomcat_start_command:
+
+d4science_tomcat_stop_command:
diff --git a/d4s_user_services_perms/tasks/d4s-tomcat-node.yml b/d4s_user_services_perms/tasks/d4s-tomcat-node.yml
index 2984ea6a..17a7a56c 100644
--- a/d4s_user_services_perms/tasks/d4s-tomcat-node.yml
+++ b/d4s_user_services_perms/tasks/d4s-tomcat-node.yml
@@ -1,19 +1,41 @@
 ---
-- name: Install the sudoers config that permits the tomcat user to restart the service
-  template: src=tomcat-sudoers.j2 dest=/etc/sudoers.d/tomcat-d4science owner=root group=root mode=0440
-  tags: [ 'tomcat', 'd4science', 'sudo' ]
-
 - name: Install the script that allows the tomcat user to start and stop the service without using the full path
   template: src={{ item.1 }}.j2 dest={{ item.0.user_home }}/{{ item.1 }} owner={{ item.0.user }} group={{ item.0.user }} mode=0755
   with_nested:
-    - '{{ tomcat_m_instances }}'
+    - '{{ tomcat_m_instances | default ([]) }}'
     - [ 'startContainer.sh', 'stopContainer.sh' ]
-  tags: [ 'tomcat', 'd4science', 'sudo' ]
+  when: tomcat_m_instances is defined
+  tags: [ 'tomcat', 'd4science', 'sudo', 'startup_cmd' ]
 
 - name: Install the README file that explains where the options files are placed and how start/stop the service
   template: src={{ item.1 }}.j2 dest={{ item.0.user_home }}/{{ item.1 }} owner={{ item.0.user }} group={{ item.0.user }} mode=0444
   with_nested:
     - '{{ tomcat_m_instances }}'
     - [ 'README-tomcat' ]
+  when: tomcat_m_instances is defined
   tags: [ 'tomcat', 'd4science', 'd4s_readme' ]
 
+# A manual tomcat installation. We try to fix it in some way
+- name: Create the d4science tomcat user
+  user: name={{ d4science_user }} home={{ d4science_user_home }} createhome={{ d4science_user_create_home }} shell={{ d4science_user_shell }}
+  when: tomcat_m_instances is not defined
+  tags: [ 'tomcat', 'd4science', 'users' ]
+
+- name: Install the script that allows the tomcat user to start and stop the service without using the full path
+  template: src={{ item }}.j2 dest=/home/{{ d4science_user }}/{{ item }} owner={{ d4science_user }} group={{ d4science_user }} mode=0755
+  with_items:
+    - 'startContainer.sh'
+    - 'stopContainer.sh'
+  when: tomcat_m_instances is not defined
+  tags: [ 'tomcat', 'd4science', 'sudo', 'startup_cmd' ]
+
+- name: Install a logrotate rule for catalina.out and access_log
+  template: src=catalina-logrotate.j2 dest=/etc/logrotate.d/catalina_access owner=root group=root mode=0644
+  when: tomcat_m_instances is not defined
+  tags: [ 'tomcat', 'd4science', 'startup_cmd' ]
+
+# We always install the sudoers file
+- name: Install the sudoers config that permits the tomcat user to restart the service
+  template: src=tomcat-sudoers.j2 dest=/etc/sudoers.d/tomcat-d4science owner=root group=root mode=0440
+  tags: [ 'tomcat', 'd4science', 'sudo', 'startup_cmd' ]
+
diff --git a/d4s_user_services_perms/templates/catalina-logrotate.j2 b/d4s_user_services_perms/templates/catalina-logrotate.j2
new file mode 100644
index 00000000..836a931c
--- /dev/null
+++ b/d4s_user_services_perms/templates/catalina-logrotate.j2
@@ -0,0 +1,20 @@
+{{ d4science_manual_tomcat_log_dir }}/catalina.out {
+  copytruncate
+  daily
+  rotate {{ d4science_manual_tomcat_rotate_copies }}
+  compress
+  missingok
+  create 640 {{ d4science_user }} {{ d4science_user }}
+}
+
+{% if d4science_manual_tomcat_rotate_access_log %}
+{{ d4science_manual_tomcat_log_dir }}/localhost_access.log {
+  copytruncate
+  daily
+  rotate {{ d4science_manual_tomcat_rotate_copies }}
+  compress
+  missingok
+  create 640 {{ d4science_user }} {{ d4science_user }}
+}
+{% endif %}
+
diff --git a/d4s_user_services_perms/templates/startContainer.sh.j2 b/d4s_user_services_perms/templates/startContainer.sh.j2
index 2d5fa86c..a4b2232f 100644
--- a/d4s_user_services_perms/templates/startContainer.sh.j2
+++ b/d4s_user_services_perms/templates/startContainer.sh.j2
@@ -1,5 +1,9 @@
 #!/bin/bash
 
+{% if tomcat_m_instances is defined %}
 sudo /etc/init.d/tomcat-instance-{{ item.0.http_port }} start
+{% else %}
+sudo {{ d4science_tomcat_start_command }}
+{% endif %}
 
 exit $?
diff --git a/d4s_user_services_perms/templates/stopContainer.sh.j2 b/d4s_user_services_perms/templates/stopContainer.sh.j2
index 2d22e531..da3407a2 100644
--- a/d4s_user_services_perms/templates/stopContainer.sh.j2
+++ b/d4s_user_services_perms/templates/stopContainer.sh.j2
@@ -1,5 +1,9 @@
 #!/bin/bash
 
+{% if tomcat_m_instances is defined %}
 sudo /etc/init.d/tomcat-instance-{{ item.0.http_port }} stop
+{% else %}
+sudo {{ d4science_tomcat_stop_command }}
+{% endif %}
 
 exit $?
diff --git a/d4s_user_services_perms/templates/tomcat-sudoers.j2 b/d4s_user_services_perms/templates/tomcat-sudoers.j2
index 8dc5cd9a..b10c66ab 100644
--- a/d4s_user_services_perms/templates/tomcat-sudoers.j2
+++ b/d4s_user_services_perms/templates/tomcat-sudoers.j2
@@ -1,2 +1,2 @@
-{{ d4science_user }}  ALL=(ALL) NOPASSWD:  /etc/init.d/tomcat-instance-*
+{{ d4science_user }}  ALL=(ALL) NOPASSWD:  {% for cmd in d4science_sudoers_commands %}{{ cmd }}{% if not loop.last %},{% endif %}{% endfor %}
 

From 2544a66b68473266d961560976cf3dc10a3ef70e Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Tue, 12 Jul 2016 15:33:46 +0200
Subject: [PATCH 14/34] library/roles/iptables/templates/iptables-rules.v4.j2:
 If we are going to install letsencrypt, open the port 80/tcp to the world.

---
 iptables/templates/iptables-rules.v4.j2 | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/iptables/templates/iptables-rules.v4.j2 b/iptables/templates/iptables-rules.v4.j2
index f28fb135..22153079 100644
--- a/iptables/templates/iptables-rules.v4.j2
+++ b/iptables/templates/iptables-rules.v4.j2
@@ -41,6 +41,9 @@
 -A INPUT -s {{ network.nmis }} -j ACCEPT
 -A INPUT -s {{ network.eduroam }} -j ACCEPT
 {% endif %}
+{% if letsencrypt_acme_install is defined and letsencrypt_acme_install %}
+-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
+{% endif %}
 {% if http_port is defined %}
 # http
 {% if http_allowed_hosts is defined %}

From ebe5e5e79f3d477c98d67ef71803fee32577db66 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Tue, 12 Jul 2016 16:19:48 +0200
Subject: [PATCH 15/34] library/roles/postgresql: Configure ssl for pgpool too,
 if enable. Option to force ssl client connections to postgres.

---
 postgresql/defaults/main.yml                  |  9 +++++
 postgresql/files/pgpool-letsencrypt-acme.sh   | 36 +++++++++++++++++++
 postgresql/tasks/configure-access.yml         | 16 ++++++++-
 postgresql/tasks/main.yml                     |  4 +++
 .../tasks/pgpool-letsencrypt-acmetool.yml     | 15 ++++++++
 postgresql/templates/pgpool.conf.j2           | 25 ++++---------
 6 files changed, 86 insertions(+), 19 deletions(-)
 create mode 100644 postgresql/files/pgpool-letsencrypt-acme.sh
 create mode 100644 postgresql/tasks/pgpool-letsencrypt-acmetool.yml

diff --git a/postgresql/defaults/main.yml b/postgresql/defaults/main.yml
index 32e10d53..958d1fee 100644
--- a/postgresql/defaults/main.yml
+++ b/postgresql/defaults/main.yml
@@ -33,6 +33,7 @@ psql_conf_parameters:
 
 # SSL as a special case
 psql_enable_ssl: False
+psql_force_ssl_client_connection: False
 postgresql_letsencrypt_managed: True
 psql_conf_ssl_parameters:
   - { name: 'ssl', value: 'true' }
@@ -125,6 +126,14 @@ pgpool_memqcache_memcached_port: 11211
 pgpool_memqcache_expire: 0
 pgpool_memqcache_auto_cache_invalidation: 'on'
 
+# SSL as a special case
+pgpool_enable_ssl: False
+pgpool_letsencrypt_managed: True
+pgpool_ssl_key: /etc/pki/pgpool2/pgpool2.key
+pgpool_ssl_cert: '/var/lib/acme/live/{{ ansible_fqdn }}/cert'
+pgpool_ssl_ca: '/var/lib/acme/live/{{ ansible_fqdn }}/chain'
+pgpool_ssl_ca_dir: /etc/ssl/certs
+
 # WAL files archiving is mandatory for pgpool recovery
 psql_wal_files_archiving_enabled: '{{ psql_pgpool_install }}'
 psql_restart_after_wal_enabling: True
diff --git a/postgresql/files/pgpool-letsencrypt-acme.sh b/postgresql/files/pgpool-letsencrypt-acme.sh
new file mode 100644
index 00000000..4093f67b
--- /dev/null
+++ b/postgresql/files/pgpool-letsencrypt-acme.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+H_NAME=$( hostname -f )
+LE_SERVICES_SCRIPT_DIR=/usr/lib/acme/hooks
+LE_CERTS_DIR=/var/lib/acme/live/$H_NAME
+LE_LOG_DIR=/var/log/letsencrypt
+PGPOOL2_CERTDIR=/etc/pki/pgpool2
+PGPOOL2_KEYFILE=$PGPOOL2_CERTDIR/pgpool2.key
+DATE=$( date )
+
+[ ! -d $PGPOOL2_CERTDIR ] && mkdir -p $PGPOOL2_CERTDIR
+[ ! -d $LE_LOG_DIR ] && mkdir $LE_LOG_DIR
+echo "$DATE" >> $LE_LOG_DIR/pgpool2.log
+
+if [ -f /etc/default/letsencrypt ] ; then
+    . /etc/default/letsencrypt
+else
+    echo "No letsencrypt default file" >> $LE_LOG_DIR/pgpool2.log
+fi
+
+echo "Copy the key file" >> $LE_LOG_DIR/pgpool2.log
+cp ${LE_CERTS_DIR}/privkey  ${PGPOOL2_KEYFILE}
+chmod 440 ${PGPOOL2_KEYFILE}
+chgrp postgres ${PGPOOL2_KEYFILE}
+
+echo "Reload the pgpool2 service" >> $LE_LOG_DIR/pgpool2.log
+if [ -x /bin/systemctl ] ; then
+    systemctl reload pgpool2 >> $LE_LOG_DIR/pgpool2.log 2>&1
+else
+    service pgpool2 reload >> $LE_LOG_DIR/pgpool2.log 2>&1
+fi
+
+echo "Done." >> $LE_LOG_DIR/pgpool2.log
+
+exit 0
+
diff --git a/postgresql/tasks/configure-access.yml b/postgresql/tasks/configure-access.yml
index 30154ba1..ca4ff1fc 100644
--- a/postgresql/tasks/configure-access.yml
+++ b/postgresql/tasks/configure-access.yml
@@ -6,7 +6,7 @@
 #    - { name: 'db_name', user: 'db_user', pwd: 'db_pwd', allowed_hosts: [ '146.48.123.17/32', '146.48.122.110/32' ] }
 #
 - name: Give access to the remote postgresql client
-  lineinfile: name=/etc/postgresql/{{ psql_version }}/main/pg_hba.conf regexp="^host {{ item.0.name }} {{ item.0.user }} {{ item.1 }}.*$" line="host {{ item.0.name }} {{ item.0.user }} {{ item.1 }} md5"
+  lineinfile: name=/etc/postgresql/{{ psql_version }}/main/pg_hba.conf regexp="^host.* {{ item.0.name }} {{ item.0.user }} {{ item.1 }}.*$" line="host {{ item.0.name }} {{ item.0.user }} {{ item.1 }} md5"
   with_subelements: 
     - '{{ psql_db_data | default([]) }}'
     - allowed_hosts
@@ -14,6 +14,20 @@
     - psql_listen_on_ext_int
     - psql_db_data is defined
     - item.1 is defined
+    - not psql_force_ssl_client_connection
+  notify: Reload postgresql
+  tags: [ 'postgresql', 'postgres', 'pg_hba' ]
+
+- name: Give access to the remote postgresql client, force ssl
+  lineinfile: name=/etc/postgresql/{{ psql_version }}/main/pg_hba.conf regexp="^host.* {{ item.0.name }} {{ item.0.user }} {{ item.1 }}.*$" line="hostssl {{ item.0.name }} {{ item.0.user }} {{ item.1 }} md5"
+  with_subelements: 
+    - '{{ psql_db_data | default([]) }}'
+    - allowed_hosts
+  when:
+    - psql_listen_on_ext_int
+    - psql_db_data is defined
+    - item.1 is defined
+    - psql_force_ssl_client_connection
   notify: Reload postgresql
   tags: [ 'postgresql', 'postgres', 'pg_hba' ]
 
diff --git a/postgresql/tasks/main.yml b/postgresql/tasks/main.yml
index 115e215e..36fe4d16 100644
--- a/postgresql/tasks/main.yml
+++ b/postgresql/tasks/main.yml
@@ -33,5 +33,9 @@
   when:
     - postgresql_letsencrypt_managed
     - letsencrypt_acme_install is defined
+- include: pgpool-letsencrypt-acmetool.yml
+  when:
+    - pgpool_letsencrypt_managed
+    - letsencrypt_acme_install is defined
 
 
diff --git a/postgresql/tasks/pgpool-letsencrypt-acmetool.yml b/postgresql/tasks/pgpool-letsencrypt-acmetool.yml
new file mode 100644
index 00000000..dc2f333d
--- /dev/null
+++ b/postgresql/tasks/pgpool-letsencrypt-acmetool.yml
@@ -0,0 +1,15 @@
+---
+- name: Create the acme hooks directory if it does not yet exist
+  file: dest={{ letsencrypt_acme_services_scripts_dir }} state=directory owner=root group=root
+  when:
+    - pgpool_letsencrypt_managed
+    - letsencrypt_acme_install
+  tags: [ 'postgresql', 'postgres', 'pgpool', 'letsencrypt' ]
+
+- name: Install a script that fix the letsencrypt certificate for postgresql and then reload the service
+  copy: src=pgpool-letsencrypt-acme.sh dest={{ letsencrypt_acme_services_scripts_dir }}/pgpool owner=root group=root mode=4555
+  when:
+    - pgpool_letsencrypt_managed
+    - letsencrypt_acme_install
+  tags: [ 'postgresql', 'postgres', 'pgpool', 'letsencrypt' ]
+
diff --git a/postgresql/templates/pgpool.conf.j2 b/postgresql/templates/pgpool.conf.j2
index 04f3d9ff..14fc72bb 100644
--- a/postgresql/templates/pgpool.conf.j2
+++ b/postgresql/templates/pgpool.conf.j2
@@ -77,25 +77,14 @@ authentication_timeout = 60
                                    # Delay in seconds to complete client authentication
                                    # 0 means no timeout.
 
+{% if pgpool_enable_ssl %}
 # - SSL Connections -
-
-ssl = off
-                                   # Enable SSL support
-                                   # (change requires restart)
-#ssl_key = './server.key'
-                                   # Path to the SSL private key file
-                                   # (change requires restart)
-#ssl_cert = './server.cert'
-                                   # Path to the SSL public certificate file
-                                   # (change requires restart)
-#ssl_ca_cert = ''
-                                   # Path to a single PEM format file
-                                   # containing CA root certificate(s)
-                                   # (change requires restart)
-#ssl_ca_cert_dir = ''
-                                   # Directory containing CA root certificate(s)
-                                   # (change requires restart)
-
+ssl = on
+ssl_key = '{{ pgpool_ssl_key }}'
+ssl_cert = '{{ pgpool_ssl_cert }}'
+ssl_ca_cert = '{{ pgpool_ssl_ca }}'
+ssl_ca_cert_dir = '{{ pgpool_ssl_ca_dir }}'
+{% endif %}
 
 #------------------------------------------------------------------------------
 # POOLS

From b53163a875c3fc1c8659261ddcbc5ab541bc21f2 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Tue, 12 Jul 2016 16:29:52 +0200
Subject: [PATCH 16/34] library/roles/iptables/tasks/main.yml: Start the
 iptables rules immediately after a new set of rules is installed.

---
 iptables/tasks/main.yml | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

diff --git a/iptables/tasks/main.yml b/iptables/tasks/main.yml
index 3c6163c1..c3b85587 100644
--- a/iptables/tasks/main.yml
+++ b/iptables/tasks/main.yml
@@ -34,7 +34,7 @@
     - rules.v4
     - rules.v6
   when: is_trusty
-  notify: Start the iptables service
+  register: install_iptables_rules
   tags: [ 'iptables', 'iptables_rules' ]
 
 - name: Install the IPv4 and IPv6 iptables rules. The IPv6 ones are not used. On debian 7
@@ -43,7 +43,7 @@
     - rules.v4
     - rules.v6
   when: is_debian7
-  notify: Start the iptables service
+  register: install_iptables_rules
   tags: [ 'iptables', 'iptables_rules' ]
 
 - name: Install the IPv4 and IPv6 iptables rules. The IPv6 ones are not used. On debian 8
@@ -52,6 +52,17 @@
     - rules.v4
     - rules.v6
   when: is_debian8
-  notify: Start the netfilter service
+  register: install_netfilter_rules
   tags: [ 'iptables', 'iptables_rules' ]
 
+- name: Start the iptables service immediately after the new rules have been installed. This can have an impact on other tasks
+  service: name=iptables-persistent state=restarted enabled=yes
+  notify: Restart fail2ban
+  when: ( install_iptables_rules | changed )
+  tags: [ 'iptables', 'iptables_rules' ]
+
+- name: Start the netfilter service immediately after the new rules have been installed. This can have an impact on other tasks
+  service: name=netfilter-persistent state=restarted enabled=yes
+  notify: Restart fail2ban
+  when: ( install_netfilter_rules | changed )
+  tags: [ 'iptables', 'iptables_rules' ]

From 250042228724222bf4c087b0299de5ebb000baa0 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Tue, 12 Jul 2016 16:37:27 +0200
Subject: [PATCH 17/34] library/roles/ubuntu-deb-general/defaults/main.yml: Do
 not run by default the task that disables services.

---
 ubuntu-deb-general/defaults/main.yml                   | 1 +
 ubuntu-deb-general/tasks/disable-unneeded-services.yml | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/ubuntu-deb-general/defaults/main.yml b/ubuntu-deb-general/defaults/main.yml
index 11377ac1..ac6d6b61 100644
--- a/ubuntu-deb-general/defaults/main.yml
+++ b/ubuntu-deb-general/defaults/main.yml
@@ -78,6 +78,7 @@ exim_email_server_pkgs:
   - exim4-config
   - exim4-daemon-light
 
+disable_some_not_needed_services: False
 services_to_be_disabled:
   - rpcbind
   - atd
diff --git a/ubuntu-deb-general/tasks/disable-unneeded-services.yml b/ubuntu-deb-general/tasks/disable-unneeded-services.yml
index 67f5ccc2..68884cb6 100644
--- a/ubuntu-deb-general/tasks/disable-unneeded-services.yml
+++ b/ubuntu-deb-general/tasks/disable-unneeded-services.yml
@@ -2,5 +2,5 @@
 - name: Disable some unneeded services
   service: name={{ item }} state=stopped enabled=no
   with_items: '{{ services_to_be_disabled }}'
-  ignore_errors: True
+  when: disable_some_not_needed_services
   tags: [ 'bootstrap', 'disable_services' ]

From 487572aa6ea45366ff8e6fc8fe8354110af24688 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Tue, 12 Jul 2016 19:15:00 +0200
Subject: [PATCH 18/34] library/roles/ganglia: Change templates and defaults to
 support an unicast configuration. library/roles/iptables: Rules to support a
 ganglia configuration that runs over unicast and not multicast.

---
 ganglia/defaults/main.yml               |  6 +++++-
 ganglia/tasks/main.yml                  |  2 +-
 ganglia/templates/gmond.j2              | 16 +++++++++++++---
 iptables/tasks/main.yml                 | 22 +++++++++++++++++-----
 iptables/templates/iptables-rules.v4.j2 |  6 ++++++
 5 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/ganglia/defaults/main.yml b/ganglia/defaults/main.yml
index 906bca9c..aedcbd7a 100644
--- a/ganglia/defaults/main.yml
+++ b/ganglia/defaults/main.yml
@@ -5,8 +5,12 @@
 #ganglia_gmond_cluster_port: 8649
 #ganglia_gmond_mcast_addr: 239.2.11.71
 #ganglia_gmetad_host: ganglia-gmetad
-ganglia_gmond_send_metadata_interval: 60
+ganglia_gmond_send_metadata_interval: 30
 # Needed to build the correct firewall rules when jmxtrans is in use
 ganglia_gmond_use_jmxtrans: False
 # Used by other roles to install specific ganglia iptables rules or some specific ganglia plugins. Or not.
 ganglia_enabled: False
+ganglia_unicast_mode: False
+ganglia_unicast_networks:
+  - 0.0.0.0/0
+
diff --git a/ganglia/tasks/main.yml b/ganglia/tasks/main.yml
index a68eff4d..c0165f17 100644
--- a/ganglia/tasks/main.yml
+++ b/ganglia/tasks/main.yml
@@ -45,7 +45,7 @@
   tags: [ 'monitoring', 'ganglia' ]
 
 - name: Distribute the ganglia configuration file for Ubuntu < 12.04 and >= 10.04 and Debian 6
-  template: src=gmond-3.1.j2 dest=/etc/ganglia/gmond.conf owner=root group=root mode=444
+  template: src=gmond.j2 dest=/etc/ganglia/gmond.conf owner=root group=root mode=444
   when: is_ubuntu_between_10_04_and_11_04_and_is_debian_6
   notify: Restart ganglia monitor
   tags: [ 'monitoring', 'ganglia' ]
diff --git a/ganglia/templates/gmond.j2 b/ganglia/templates/gmond.j2
index dc2ef39c..d33a2a07 100644
--- a/ganglia/templates/gmond.j2
+++ b/ganglia/templates/gmond.j2
@@ -32,8 +32,9 @@ host {
 
 /* Feel free to specify as many udp_send_channels as you like.  Gmond 
    used to only support having a single channel */ 
+{% if not ganglia_unicast_mode %}
 udp_send_channel { 
-  bind_hostname = yes
+  #bind_hostname = yes
   mcast_join = {{ ganglia_gmond_mcast_addr }}
   port = {{ ganglia_gmond_cluster_port }} 
   ttl = 1 
@@ -45,10 +46,19 @@ udp_recv_channel {
   port = {{ ganglia_gmond_cluster_port }} 
 } 
 
-udp_recv_channel { 
-  bind = {{ ansible_fqdn }}
+{% else %}
+{% for host in ganglia_gmetad_sources %}
+udp_send_channel { 
+  host = {{ host }}
   port = {{ ganglia_gmond_cluster_port }} 
+  ttl = 1 
 } 
+{% endfor %}
+
+{% endif %}
+udp_recv_channel { 
+  port = {{ ganglia_gmond_cluster_port }} 
+}
 
 /* You can specify as many tcp_accept_channels as you like to share 
    an xml description of the state of the cluster */ 
diff --git a/iptables/tasks/main.yml b/iptables/tasks/main.yml
index c3b85587..892fb731 100644
--- a/iptables/tasks/main.yml
+++ b/iptables/tasks/main.yml
@@ -25,7 +25,7 @@
     - rules.v4
     - rules.v6
   when: is_precise
-  notify: Start the iptables service
+  register: install_iptables_rules_precise
   tags: [ 'iptables', 'iptables_rules' ]
 
 - name: Install the IPv4 and IPv6 iptables rules. The IPv6 ones are not used. On trusty
@@ -34,7 +34,7 @@
     - rules.v4
     - rules.v6
   when: is_trusty
-  register: install_iptables_rules
+  register: install_iptables_rules_trusty
   tags: [ 'iptables', 'iptables_rules' ]
 
 - name: Install the IPv4 and IPv6 iptables rules. The IPv6 ones are not used. On debian 7
@@ -43,7 +43,7 @@
     - rules.v4
     - rules.v6
   when: is_debian7
-  register: install_iptables_rules
+  register: install_iptables_rules_deb7
   tags: [ 'iptables', 'iptables_rules' ]
 
 - name: Install the IPv4 and IPv6 iptables rules. The IPv6 ones are not used. On debian 8
@@ -55,10 +55,22 @@
   register: install_netfilter_rules
   tags: [ 'iptables', 'iptables_rules' ]
 
-- name: Start the iptables service immediately after the new rules have been installed. This can have an impact on other tasks
+- name: Start the iptables service immediately after the new rules have been installed, on Ubuntu precise. This can have an impact on other tasks
   service: name=iptables-persistent state=restarted enabled=yes
   notify: Restart fail2ban
-  when: ( install_iptables_rules | changed )
+  when: ( install_iptables_rules_precise | changed )
+  tags: [ 'iptables', 'iptables_rules' ]
+
+- name: Start the iptables service immediately after the new rules have been installed, on Ubuntu Trusty. This can have an impact on other tasks
+  service: name=iptables-persistent state=restarted enabled=yes
+  notify: Restart fail2ban
+  when: ( install_iptables_rules_trusty | changed )
+  tags: [ 'iptables', 'iptables_rules' ]
+
+- name: Start the iptables service immediately after the new rules have been installed, on Debian 7. This can have an impact on other tasks
+  service: name=iptables-persistent state=restarted enabled=yes
+  notify: Restart fail2ban
+  when: ( install_iptables_rules_deb7 | changed )
   tags: [ 'iptables', 'iptables_rules' ]
 
 - name: Start the netfilter service immediately after the new rules have been installed. This can have an impact on other tasks
diff --git a/iptables/templates/iptables-rules.v4.j2 b/iptables/templates/iptables-rules.v4.j2
index 22153079..a9ebe483 100644
--- a/iptables/templates/iptables-rules.v4.j2
+++ b/iptables/templates/iptables-rules.v4.j2
@@ -178,12 +178,18 @@
 {% if ganglia_enabled %}
 {% if ganglia_gmond_cluster_port is defined %}
 # Ganglia
+{% if not ganglia_unicast_mode %}
 {% if ganglia_gmond_use_jmxtrans is not defined or not ganglia_gmond_use_jmxtrans %}
 -A INPUT -m pkttype --pkt-type multicast -d {{ ganglia_gmond_mcast_addr }} -j ACCEPT
 {% else %}
 -A INPUT -m pkttype --pkt-type multicast -j ACCEPT
 -A INPUT -p udp -m udp -d {{ ganglia_gmond_mcast_addr }} --dport {{ ganglia_gmond_cluster_port }} -j ACCEPT
 {% endif %}
+{% else %}
+{% for net in ganglia_unicast_networks %}
+-A INPUT -p udp -m udp -s {{ net }} --dport {{ ganglia_gmond_cluster_port }} -j ACCEPT
+{% endfor %}
+{% endif %}
 -A INPUT -m state --state NEW -s {{ ganglia_gmetad_host }} -p tcp -m tcp --dport {{ ganglia_gmond_cluster_port }} -j ACCEPT
 -A INPUT -s {{ ganglia_gmetad_host }} -p udp -m udp --dport {{ ganglia_gmond_cluster_port }}  -j ACCEPT
 {% endif %}

From 130b6e3ced2d6763a2c43312a9d62b688fdd0a62 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Wed, 13 Jul 2016 18:30:56 +0200
Subject: [PATCH 19/34] library/roles/smartgears/ckan_connector: New version.
 Task that permit the upgrades management.

---
 smartgears/ckan_connector/defaults/main.yml | 8 ++++----
 smartgears/ckan_connector/tasks/main.yml    | 6 +++++-
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/smartgears/ckan_connector/defaults/main.yml b/smartgears/ckan_connector/defaults/main.yml
index 7b36849e..2896f5a9 100644
--- a/smartgears/ckan_connector/defaults/main.yml
+++ b/smartgears/ckan_connector/defaults/main.yml
@@ -1,8 +1,8 @@
 ---
-gcube_repository: 'gcube-snapshots'
+gcube_repository: 'gcube-staging'
 ckan_connector_plugin_install: False
-ckan_connector_ver: 1.0.0
-ckan_connector_name: 'ckan_connector-{{ ckan_connector_ver }}-20160627.090904-1.war'
-ckan_connector_url: 'http://maven.research-infrastructures.eu/nexus/content/repositories/{{ gcube_repository }}/org/gcube/data/access/ckan_connector/{{ ckan_connector_ver}}-SNAPSHOT/{{ ckan_connector_name }}'
+ckan_connector_ver: 1.0.0-4.0.0-129609
+ckan_connector_name: 'ckan_connector-{{ ckan_connector_ver }}-{{ ckan_connector_ver }}.war'
+ckan_connector_url: 'http://maven.research-infrastructures.eu/nexus/content/repositories/{{ gcube_repository }}/org/gcube/data/access/ckan_connector/{{ ckan_connector_ver}}/{{ ckan_connector_name }}'
 ckan_connector_war_file: ckan-connector.war
 ckan_connector_user: ckan_connector
diff --git a/smartgears/ckan_connector/tasks/main.yml b/smartgears/ckan_connector/tasks/main.yml
index 1fa412ff..ed6400fc 100644
--- a/smartgears/ckan_connector/tasks/main.yml
+++ b/smartgears/ckan_connector/tasks/main.yml
@@ -1,6 +1,10 @@
 ---
 - block:
-    
+
+    - name: Remove the installed CKAN connector before upgrading
+      file: dest={{ smartgears_instance_path }}/webapps/ckan-connector state=absent
+      when: smartgears_upgrade
+
     - name: Get the CKAN connector war file
       get_url: url={{ ckan_connector_url }} dest={{ smartgears_instance_path }}/webapps/{{ ckan_connector_war_file }}
       

From 36180848191b56ed00a046e794cfb80f83cc167e Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Wed, 13 Jul 2016 19:04:28 +0200
Subject: [PATCH 20/34] d4science-ghn-cluster: CKAN, fixes to the
 smartgears/ckan-connector installation.
 library/roles/smartgears/ckan_connector: New version, fix the upgrade phase.
 library/roles/solr-tomcat-instance: Configure a multicore instance when
 requested.

---
 ckan/ckan-solr/defaults/main.yml              |   4 +
 ckan/ckan-solr/tasks/main.yml                 |   6 +-
 smartgears/ckan_connector/defaults/main.yml   |   7 +-
 smartgears/ckan_connector/tasks/main.yml      |   5 +-
 solr-tomcat-instance/defaults/main.yml        |   8 +-
 .../files/solr_core_base.tar.gz               | Bin 0 -> 116285 bytes
 solr-tomcat-instance/tasks/main.yml           |  69 ++++++++++--------
 solr-tomcat-instance/templates/solr.xml.j2    |  15 ++++
 8 files changed, 75 insertions(+), 39 deletions(-)
 create mode 100644 solr-tomcat-instance/files/solr_core_base.tar.gz

diff --git a/ckan/ckan-solr/defaults/main.yml b/ckan/ckan-solr/defaults/main.yml
index 655077c2..fc579c10 100644
--- a/ckan/ckan-solr/defaults/main.yml
+++ b/ckan/ckan-solr/defaults/main.yml
@@ -1,2 +1,6 @@
 ---
 ckan_solr_port: 8983
+solr_multicore: True
+solr_cores:
+  - collection1
+
diff --git a/ckan/ckan-solr/tasks/main.yml b/ckan/ckan-solr/tasks/main.yml
index 71738e0c..4ac0d794 100644
--- a/ckan/ckan-solr/tasks/main.yml
+++ b/ckan/ckan-solr/tasks/main.yml
@@ -1,12 +1,14 @@
 ---
 - name: Install the solr schema used by CKAN
-  file: src=/usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml dest={{ tomcat_m_instances_base_path }}/{{ ckan_solr_port }}/solr/data/solr/collection1/conf/schema.xml state=link force=yes
+  file: src=/usr/lib/ckan/default/src/ckan/ckan/config/solr/schema.xml dest={{ solr_collections_base_dir }}/{{ item }}/conf/schema.xml state=link force=yes
+  with_items: '{{ solr_cores }}'
   when: not ckan_geonetwork_harvester
   notify: Solr Restart
   tags: [ 'ckan', 'solr', 'solr_schema' ]
 
 - name: Install the solr schema used by CKAN, modified with the spatial fields
-  copy: src=schema.xml dest={{ tomcat_m_instances_base_path }}/{{ ckan_solr_port }}/solr/data/solr/collection1/conf/schema.xml force=yes
+  copy: src=schema.xml dest={{ solr_collections_base_dir }}/{{ item }}/conf/schema.xml force=yes
+  with_items: '{{ solr_cores }}'
   when: ckan_geonetwork_harvester
   notify: Solr Restart
   tags: [ 'ckan', 'solr', 'solr_schema' ]
diff --git a/smartgears/ckan_connector/defaults/main.yml b/smartgears/ckan_connector/defaults/main.yml
index 2896f5a9..e00efe9a 100644
--- a/smartgears/ckan_connector/defaults/main.yml
+++ b/smartgears/ckan_connector/defaults/main.yml
@@ -2,7 +2,8 @@
 gcube_repository: 'gcube-staging'
 ckan_connector_plugin_install: False
 ckan_connector_ver: 1.0.0-4.0.0-129609
-ckan_connector_name: 'ckan_connector-{{ ckan_connector_ver }}-{{ ckan_connector_ver }}.war'
-ckan_connector_url: 'http://maven.research-infrastructures.eu/nexus/content/repositories/{{ gcube_repository }}/org/gcube/data/access/ckan_connector/{{ ckan_connector_ver}}/{{ ckan_connector_name }}'
-ckan_connector_war_file: ckan-connector.war
+ckan_connector_name: ckan-connector
+ckan_connector_filename: '{{ ckan_connector_name }}-{{ ckan_connector_ver }}.war'
+ckan_connector_url: 'http://maven.research-infrastructures.eu/nexus/content/repositories/{{ gcube_repository }}/org/gcube/data/access/{{ ckan_connector_name }}/{{ ckan_connector_ver}}/{{ ckan_connector_filename }}'
+ckan_connector_war_file: '{{ ckan_connector_name }}.war'
 ckan_connector_user: ckan_connector
diff --git a/smartgears/ckan_connector/tasks/main.yml b/smartgears/ckan_connector/tasks/main.yml
index ed6400fc..c8c396af 100644
--- a/smartgears/ckan_connector/tasks/main.yml
+++ b/smartgears/ckan_connector/tasks/main.yml
@@ -2,7 +2,10 @@
 - block:
 
     - name: Remove the installed CKAN connector before upgrading
-      file: dest={{ smartgears_instance_path }}/webapps/ckan-connector state=absent
+      file: dest={{ item }} state=absent
+      with_items:
+        - '{{ smartgears_instance_path }}/webapps/ckan-connector'
+        - '{{ smartgears_instance_path }}/webapps/ckan-connector.war'
       when: smartgears_upgrade
 
     - name: Get the CKAN connector war file
diff --git a/solr-tomcat-instance/defaults/main.yml b/solr-tomcat-instance/defaults/main.yml
index a3ec346a..1f842043 100644
--- a/solr-tomcat-instance/defaults/main.yml
+++ b/solr-tomcat-instance/defaults/main.yml
@@ -23,11 +23,17 @@ solr_outside_tomcat_dir: False
 # We need to define this one because we are using the tomcat multiple instances role
 solr_tomcat_instance_dir: '{{ tomcat_m_instances_base_path }}/{{ solr_http_port }}'
 solr_data_dir: '{{ solr_tomcat_instance_dir }}/solr'
+solr_collections_base_dir: '{{ solr_data_dir }}/data/solr'
 solr_zookeeper_data_dir: '{{ solr_data_dir }}/zoo_data'
 solr_install_collection1: False
 # Stand alone
 solr_opts: "-DzkRun -DnumShards={{ solr_shards }}"
 # This is for the replica/sharded version
 # We need to pass a lot of options to the jdk for zookeeper and the solr shard configuration
-#solr_opts: "-DzkRun={{ ansible_fqdn}}:{{ solr_zoo_port }} -DnumShards={{ solr_shards }} -DzkHost=index1.t.hadoop.research-infrastructures.eu:{{ solr_zoo_port }},index2.t.hadoop.research-infrastructures.eu:{{ solr_zoo_port }},index3.t.hadoop.research-infrastructures.eu:{{ solr_zoo_port }} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port={{ solr_jmx_port_1 }} -Dcom.sun.management.jmxremote.password.file={{ tomcat_conf_dir }}/jmxremote.passwd -Dcom.sun.management.jmxremote.access.file={{ tomcat_conf_dir }}/jmxremote.access"
+#solr_opts: "-DzkRun={{ ansible_fqdn}}:{{ solr_zoo_port }} -DnumShards={{ solr_shards }} -DzkHost=index1:{{ solr_zoo_port }},index2:{{ solr_zoo_port }},index3:{{ solr_zoo_port }}"
+
+# Define the following if you want a multicore installation
+#solr_multicore: True
+solr_cores:
+  - collection1
 
diff --git a/solr-tomcat-instance/files/solr_core_base.tar.gz b/solr-tomcat-instance/files/solr_core_base.tar.gz
new file mode 100644
index 0000000000000000000000000000000000000000..8465587f781f73cb9666cccae6503087dd982f51
GIT binary patch
literal 116285
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
G&<6lS>wL8U

literal 0
HcmV?d00001

diff --git a/solr-tomcat-instance/tasks/main.yml b/solr-tomcat-instance/tasks/main.yml
index 244759c4..dc79361a 100644
--- a/solr-tomcat-instance/tasks/main.yml
+++ b/solr-tomcat-instance/tasks/main.yml
@@ -5,23 +5,20 @@
     - data/solr
     - webapps
     - zoo_data
-  tags:
-    - solr
+    - collection_data
+  tags: solr
 
 - name: Create the link from the tomcat instance for solr to the solr data directory
   file: src={{ solr_data_dir }}/data/solr dest={{ solr_tomcat_instance_dir }}/solr state=link
   when: solr_outside_tomcat_dir
-  tags:
-    - solr
+  tags: solr
 
 - name: Solr needs some additional packages
   apt: pkg={{ item }} state={{ pkg_state }}
   with_items:
     - libslf4j-java
     - libcommons-logging-java
-  tags:
-    - solr
-    - tomcat
+  tags: [ solr, tomcat ]
 
 - name: Let the additional packages jar files visible to tomcat
   file: src=/usr/share/java/{{ item }} dest={{ tomcat_catalina_home_dir }}/lib/{{ item }} state=link
@@ -32,51 +29,61 @@
     - jcl-over-slf4j.jar
     - commons-logging.jar
   notify: tomcat solr restart
-  tags:
-    - solr
-    - tomcat
+  tags: [ solr, tomcat ]
 
 - name: Install the solr webapp under <solr_data_mountpoint>/webapps
   copy: src=solr-{{ solr_version }}.war dest={{ solr_data_dir }}/webapps/solr-{{ solr_version }}.war owner={{ solr_user }} group={{ solr_user }} mode=0644
   register: solr_war_installed
   notify: tomcat solr restart
-  tags:
-    - solr
-    - tomcat
+  tags: [ solr, tomcat ]
 
 - name: Install the solr catalina definition
   template: src=catalina-{{ item }}.j2 dest={{ solr_tomcat_instance_dir }}/conf/Catalina/localhost/{{ item }} owner=root group=root mode=0444
   with_items:
     - solr.xml
   notify: tomcat solr restart
-  tags:
-    - solr
+  tags: [ solr, tomcat ]
+
+- name: Copy the solr collection1 and solr_core_base archives on the target machine
+  copy: src={{ item }} dest={{ solr_data_dir }}/collection_data owner={{ solr_user }} group={{ solr_user }}
+  with_items:
+    - collection1.tar.gz
+    - solr_core_base.tar.gz
+  tags: [ solr, tomcat ]
 
 - name: Install the solr collection1 example
-  unarchive: src=collection1.tar.gz dest={{ solr_data_dir }}/data/solr/
+  unarchive: src={{ solr_data_dir }}/collection_data/collection1.tar.gz dest={{ solr_collections_base_dir }} copy=no
   args:
-    creates: '{{ solr_data_dir }}/data/solr/collection1'
+    creates: '{{ solr_data_dir }}/data/solr/collection1/conf/solrconfig.xml'
   when: solr_install_collection1
   notify: tomcat solr restart
-  tags:
-    - solr
-    - tomcat
+  tags: [ solr, tomcat ]
 
-- name: Fix the collection1 permissions
-  file: path={{ solr_data_dir }}/data/solr/ owner={{ solr_user }} group={{ solr_user }} recurse=yes
-  when: solr_install_collection1
-  tags:
-    - solr
-    - tomcat
+- name: Create the solr cores data directories
+  file: dest={{ solr_collections_base_dir }}/{{ item }} state=directory owner={{ solr_user }} group={{ solr_user }}
+  with_items: '{{ solr_cores }}'
+  when: solr_multicore is defined and solr_multicore
+  tags: [ solr, tomcat ]
+  
+- name: Install the solr cores data on a multicore system
+  unarchive: src={{ solr_data_dir }}/collection_data/solr_core_base.tar.gz dest={{ solr_data_dir }}/data/solr/{{ item }} copy=no
+  args:
+    creates: '{{ solr_data_dir }}/data/solr/{{ item }}/conf/solrconfig.xml'
+  with_items: '{{ solr_cores }}'
+  when: solr_multicore is defined and solr_multicore
+  notify: tomcat solr restart
+  tags: [ solr, tomcat ]
+
+- name: Fix the cores permissions
+  file: path={{ solr_collections_base_dir }} owner={{ solr_user }} group={{ solr_user }} recurse=yes
+  tags: [ solr, tomcat ]
 
 - name: Install the tomcat.local default file
   template: src={{ item }}.j2 dest=/etc/default/tomcat-instance-{{ solr_http_port }}.local owner=root group={{ solr_user }} mode=0440
   with_items:
     - tomcat.local
   notify: tomcat solr restart
-  tags:
-    - solr
-    - tomcat
+  tags: [ solr, tomcat ]
 
 - name: Install the solr.xml and zookeeper conf files
   template: src={{ item }}.j2 dest={{ solr_data_dir }}/data/solr/{{ item }} owner=root group={{ solr_user }} mode=0440
@@ -84,7 +91,5 @@
     - solr.xml
     - zoo.cfg
   notify: tomcat solr restart
-  tags:
-    - solr
-    - tomcat
+  tags: [ solr, tomcat ]
 
diff --git a/solr-tomcat-instance/templates/solr.xml.j2 b/solr-tomcat-instance/templates/solr.xml.j2
index 9f1a7025..86a3c5ef 100644
--- a/solr-tomcat-instance/templates/solr.xml.j2
+++ b/solr-tomcat-instance/templates/solr.xml.j2
@@ -29,11 +29,13 @@
 <solr>
 
   <solrcloud>
+    {% if solr_multicore is not defined or not solr_multicore %}
     <str name="host">{{ ansible_fqdn }}</str>
     <int name="hostPort">{{ solr_http_port_1 }}</int>
     <str name="hostContext">${hostContext:solr}</str>
     <int name="zkClientTimeout">${zkClientTimeout:30000}</int>
     <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
+    {% endif %}
   </solrcloud>
 
   <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
@@ -41,4 +43,17 @@
     <int name="connTimeout">${connTimeout:0}</int>
   </shardHandlerFactory>
 
+  {% if solr_multicore is defined or solr_multicore %}
+  <cores adminPath="/admin/cores">
+    {% for core in solr_cores %}
+    
+    <core name="{{ core }}" instanceDir="{{ core }}">
+      <property name="dataDir" value="{{ solr_collections_base_dir }}/{{ core }}" />
+    </core>
+    
+    {% endfor %}
+  </cores>
+  {% endif %}
+
+
 </solr>

From ae8283094ad086aa81903f640bd9847354a9db59 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Thu, 14 Jul 2016 12:40:31 +0200
Subject: [PATCH 21/34] library/roles/smartgears: Simplify the smartgears
 template management. Add a conditional to handle the case where no VO is
 needed, see https://support.d4science.org/issues/4723.

---
 smartgears/smart_executor/tasks/main.yml      | 59 +++++++------------
 .../templates/smart_executor-container.xml.j2 | 34 -----------
 smartgears/smartgears/defaults/main.yml       |  1 +
 .../smartgears/tasks/smartgears-app.yml       |  1 -
 .../smartgears/templates/container.xml.j2     | 12 +++-
 5 files changed, 33 insertions(+), 74 deletions(-)
 delete mode 100644 smartgears/smart_executor/templates/smart_executor-container.xml.j2

diff --git a/smartgears/smart_executor/tasks/main.yml b/smartgears/smart_executor/tasks/main.yml
index de1fe8a6..d2d462ce 100644
--- a/smartgears/smart_executor/tasks/main.yml
+++ b/smartgears/smart_executor/tasks/main.yml
@@ -1,41 +1,24 @@
 ---
-- name: Remove the old smart executor files
-  file: path={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }} state=absent
-  when:
-    - smart_executor_install
-    - smartgears_upgrade
-  tags: [ 'smartgears', 'tomcat' ]
-  
-# NOTE: Install as the smartgears user so we do not mess with the permissions
-- name: Get the smart executor plugin
-  get_url: url={{ smart_executor_url }} dest={{ smartgears_user_home }}/{{ smart_executor_file }}
-  when: smart_executor_install
-  tags: [ 'smartgears', 'smart_executor', 'tomcat' ]
-  
-- name: Create the smart executor working directory
-  file: path={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }} state=directory owner={{ smartgears_user }} group={{ smartgears_user }}
-  when: smart_executor_install
-  tags: [ 'smartgears', 'smart_executor', 'tomcat' ]
-  
-- name: Unarchive the smartexecutor distribution
-  become: True
-  become_user: '{{ smartgears_user }}'
-  unarchive: copy=no src={{ smartgears_user_home }}/{{ smart_executor_file }} dest={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }} creates={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }}/WEB-INF/lib
-  when: smart_executor_install
-  notify: Restart smartgears
-  tags: [ 'smartgears', 'smart_executor', 'tomcat' ]
-  
-- name: Install the smartgears configuration file
-  template: src=smart_executor-container.xml.j2 dest={{ smartgears_install_path }}/container.xml owner={{ item.user }} group={{ item.user }}
-  with_items: '{{ tomcat_m_instances }}'
-  notify: Restart smartgears
-  when: smart_executor_install
-  register: smartexec_containerxml_state
-  tags: [ 'smartgears', 'smart_executor', 'smart_executor_conf', 'tomcat' ]
+- block:
 
-- name: Remove the smartgears application state if the configuration changed
-  file: dest={{ smartgears_install_path }}/state state=absent
-  notify: Restart smartgears
-  when: ( smartexec_containerxml_state | changed )
-  tags: [ 'smartgears', 'smart_executor', 'smart_executor_conf', 'tomcat' ]
+    - name: Remove the old smart executor files
+      file: path={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }} state=absent
+      when:
+        - smart_executor_install
+        - smartgears_upgrade
   
+    # NOTE: Install as the smartgears user so we do not mess with the permissions
+    - name: Get the smart executor plugin
+      get_url: url={{ smart_executor_url }} dest={{ smartgears_user_home }}/{{ smart_executor_file }}
+      when: smart_executor_install
+  
+    - name: Create the smart executor working directory
+      file: path={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }} state=directory owner={{ smartgears_user }} group={{ smartgears_user }}
+      when: smart_executor_install
+  
+    - name: Unarchive the smartexecutor distribution
+      unarchive: copy=no src={{ smartgears_user_home }}/{{ smart_executor_file }} dest={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }} creates={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }}/WEB-INF/lib
+      when: smart_executor_install
+      notify: Restart smartgears
+  
+    tags: [ 'smartgears', 'smart_executor', 'tomcat' ]
diff --git a/smartgears/smart_executor/templates/smart_executor-container.xml.j2 b/smartgears/smart_executor/templates/smart_executor-container.xml.j2
deleted file mode 100644
index eaec0a22..00000000
--- a/smartgears/smart_executor/templates/smart_executor-container.xml.j2
+++ /dev/null
@@ -1,34 +0,0 @@
-<container mode='{{ smartgears_mode }}'>
-  <hostname>{{ smartgears_hostname }}</hostname>
-{%if setup_nginx %}
-{%if https_port is defined %}
-	<port>{{ https_port }}</port>
-{% else %}
-	<port>{{ http_port }}</port>
-{% endif %}
-{% else %}
-  <port>{{ item.http_port }}</port>
-{% endif %}
-  <infrastructure>{{ smartgears_infrastructure_name }}</infrastructure>
-  <vo>{{ smartgears_vo_name }}</vo>
-
-  <site>
-    <country>{{ smartgears_country }}</country>
-    <location>{{ smartgears_location }}</location>
-    <latitude>41.9000</latitude>
-    <longitude>12.5000</longitude>
-  </site>
-
-  <property name='SmartGearsDistribution' value='{{ smartgears_distribution_version }}' />
-  <property name='SmartGearsDistributionBundle' value='UnBundled' />
-  <publication-frequency>60</publication-frequency>
-
-{% if smart_executor_install %}
-  <application mode="{{ smartgears_mode }}" context="{{ smart_executor_context }}">
-{% for context in smart_executor_contexts_list %}
-    <scope>/{{ smartgears_infrastructure_name }}/{{ smartgears_vo_name }}{{ context }}</scope>
-{% endfor %}
-  </application>
-{% endif %}
-
-</container>
diff --git a/smartgears/smartgears/defaults/main.yml b/smartgears/smartgears/defaults/main.yml
index 27e820c4..899005ee 100644
--- a/smartgears/smartgears/defaults/main.yml
+++ b/smartgears/smartgears/defaults/main.yml
@@ -21,6 +21,7 @@ smartgears_url: 'http://maven.research-infrastructures.eu/nexus/content/reposito
 smartgears_mode: online
 # Production infra and VO
 smartgears_infrastructure_name: "d4science.research-infrastructures.eu"
+smartgears_vo: True
 smartgears_vo_name: gCubeApps
 smartgears_hostname: '{{ ansible_fqdn }}'
 smartgears_country: it
diff --git a/smartgears/smartgears/tasks/smartgears-app.yml b/smartgears/smartgears/tasks/smartgears-app.yml
index afe26e13..a3175bf5 100644
--- a/smartgears/smartgears/tasks/smartgears-app.yml
+++ b/smartgears/smartgears/tasks/smartgears-app.yml
@@ -50,7 +50,6 @@
 - name: Install the smartgears configuration file
   template: src=container.xml.j2 dest={{ smartgears_install_path }}/container.xml owner={{ item.user }} group={{ item.user }}
   with_items: '{{ tomcat_m_instances }}'
-  when: ( generic_worker_install is not defined ) or ( not generic_worker_install )
   register: containerxml_state
   notify: Restart smartgears 
   tags: [ 'smartgears', 'smartgears_conf', 'tomcat' ]
diff --git a/smartgears/smartgears/templates/container.xml.j2 b/smartgears/smartgears/templates/container.xml.j2
index 3649a3e3..0f67989d 100644
--- a/smartgears/smartgears/templates/container.xml.j2
+++ b/smartgears/smartgears/templates/container.xml.j2
@@ -11,8 +11,10 @@
     <port>{{ item.http_port }}</port>
 {% endif %}
 	<infrastructure>{{ smartgears_infrastructure_name }}</infrastructure>
+{% if smartgears_vo %}
 	<vo>{{ smartgears_vo_name }}</vo>
-
+{% endif %}
+    
 	<site>
 		<country>{{ smartgears_country }}</country>
 		<location>{{ smartgears_location }}</location>
@@ -23,5 +25,13 @@
 	<property name='SmartGearsDistributionBundle' value='UnBundled' />
     <property name='SmartGearsDistribution' value='{{ smartgears_distribution_version }}' />
 	<publication-frequency>60</publication-frequency>
+{% if smart_executor_install is defined and smart_executor_install %}
+
+  <application mode="{{ smartgears_mode }}" context="{{ smart_executor_context }}">
+{% for context in smart_executor_contexts_list %}
+    <scope>/{{ smartgears_infrastructure_name }}/{{ smartgears_vo_name }}{{ context }}</scope>
+{% endfor %}
+  </application>
+{% endif %}
 
 </container>

From 96a35c2cc6081f1edf4e203a01b0db496ea71bb4 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Thu, 14 Jul 2016 16:12:19 +0200
Subject: [PATCH 22/34] library/roles/ckan/ckan: Fix a problem with the CKAN
 plugins dependencies. d4science-ghn-cluster: CKAN web frontends for
 BlueBridge and SoBigData.

---
 ckan/ckan/defaults/main.yml      | 2 +-
 ckan/ckan/tasks/ckan-plugins.yml | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/ckan/ckan/defaults/main.yml b/ckan/ckan/defaults/main.yml
index 0674dd76..43994df5 100644
--- a/ckan/ckan/defaults/main.yml
+++ b/ckan/ckan/defaults/main.yml
@@ -56,7 +56,7 @@ ckan_ldap_prevent_edits: True
 ckan_ldap_fallback: True
 
 # Needed to install some CKAN plugins
-additional_packages:
+ckan_additional_packages:
   - git
   - libxslt1-dev
   - gcc
diff --git a/ckan/ckan/tasks/ckan-plugins.yml b/ckan/ckan/tasks/ckan-plugins.yml
index 315d65c4..f24ca4c6 100644
--- a/ckan/ckan/tasks/ckan-plugins.yml
+++ b/ckan/ckan/tasks/ckan-plugins.yml
@@ -1,4 +1,10 @@
 ---
+- name: Install some packages dependencies
+  apt: name={{ item }} state=latest update_cache=yes
+  with_items: '{{ ckan_additional_packages }}'
+  when: ckan_geonetwork_harvester
+  tags: [ 'ckan', 'geonetwork', 'ckan_plugins', 'ckan_pip_deps' ]
+
 - name: Install some plugins dependencies inside the CKAN virtualenv
   become: True
   become_user: '{{ ckan_shell_user }}'

From 78f009ba44a4ea2efc6471837eb459ca6dcccd7d Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Thu, 14 Jul 2016 18:36:45 +0200
Subject: [PATCH 23/34] library/roles/nginx/defaults/main.yml: Add examples to
 enable cors and x-frame-options.

---
 nginx/defaults/main.yml | 46 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/nginx/defaults/main.yml b/nginx/defaults/main.yml
index 2121a727..3a7d287d 100644
--- a/nginx/defaults/main.yml
+++ b/nginx/defaults/main.yml
@@ -69,5 +69,51 @@ nginx_letsencrypt_managed: True
 #       php, rewrite rules, acls, ldap auth
 #       More robust rules
 #       log format personalization (global, inside conf.d)
+#       CORS
 #       
 # Special cases: mediawiki,...
+#
+# CORS example 1
+    # set $cors '';
+    # if ($http_origin ~* 'https?://(localhost|*\.example\.org)') {
+    #     set $cors 'true';
+    # }
+
+    # if ($cors = 'true') {
+    #     add_header 'Access-Control-Allow-Origin' "$http_origin";
+    #     add_header 'Access-Control-Allow-Credentials' 'true';
+    #     add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS';
+    #     add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With';
+    # }
+
+    # if ($request_method = 'OPTIONS') {
+    #     return 204;
+    # }
+
+# CORS example 2
+    # location / {
+    #     if ($request_method = 'OPTIONS') {
+    #         add_header 'Access-Control-Allow-Origin' '*';
+    #         add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
+    #         #
+    #         # Custom headers and headers various browsers *should* be OK with but aren't
+    #         #
+    #         add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
+    #         #
+    #         # Tell client that this pre-flight info is valid for 20 days
+    #         #
+    #         add_header 'Access-Control-Max-Age' 1728000;
+    #         add_header 'Content-Type' 'text/plain charset=UTF-8';
+    #         add_header 'Content-Length' 0;
+    #         return 204;
+    #     }
+    #     if ($request_method = 'POST') {
+    #         add_header 'Access-Control-Allow-Origin' '*';
+    #         add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
+    #         add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
+    #     }
+    #     if ($request_method = 'GET') {
+    #         add_header 'Access-Control-Allow-Origin' '*';
+    #         add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
+    #         add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
+    #     }

From a06ab825a4ba9c2ab4a1d199f1428290990d0083 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 13:36:46 +0200
Subject: [PATCH 24/34] library/roles/smartgears: Move the vo context
 management from the smart_executor role to the smartgears one. Rename
 variables consequently. See https://support.d4science.org/issues/4736.

---
 smartgears/smart_executor/defaults/main.yml      | 14 --------------
 smartgears/smartgears/defaults/main.yml          | 16 ++++++++++++++++
 smartgears/smartgears/templates/container.xml.j2 |  6 +++---
 3 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/smartgears/smart_executor/defaults/main.yml b/smartgears/smart_executor/defaults/main.yml
index a522af70..fccdbbcd 100644
--- a/smartgears/smart_executor/defaults/main.yml
+++ b/smartgears/smart_executor/defaults/main.yml
@@ -6,17 +6,3 @@ smart_executor_name: smart-executor
 smart_executor_file: '{{ smart_executor_name }}-{{ smart_executor_version }}.war'
 smart_executor_url: 'http://maven.research-infrastructures.eu/nexus/content/repositories/{{ gcube_repository }}/org/gcube/vremanagement/smart-executor/{{ smart_executor_version }}/{{ smart_executor_file }}'
 
-smart_executor_context: '/{{ smart_executor_name }}'
-smart_executor_contexts_list:
-  - ''
-  - '/BiodiversityLab'
-  - '/BiOnym'
-  - '/ScalableDataMining'
-
-# dev has two different contexts
-#smart_executor_contexts_list:
-#  - ''
-#  - '/devVRE'
-
-#  - ''
-#  - '/NextNext'
diff --git a/smartgears/smartgears/defaults/main.yml b/smartgears/smartgears/defaults/main.yml
index 899005ee..dde232c4 100644
--- a/smartgears/smartgears/defaults/main.yml
+++ b/smartgears/smartgears/defaults/main.yml
@@ -32,6 +32,22 @@ smartgears_service_name: 'tomcat-instance-{{ smartgears_http_port }}'
 
 smartgears_loglevel: WARN
 
+smartgears_define_context_vo: False
+smartgears_context: '/smart-executor'
+smartgears_contexts_list:
+  - ''
+  - '/BiodiversityLab'
+  - '/BiOnym'
+  - '/ScalableDataMining'
+
+# dev has two different contexts
+#smart_executor_contexts_list:
+#  - ''
+#  - '/devVRE'
+
+#  - ''
+#  - '/NextNext'
+
 # The iptables rules use this
 http_port: '{{ smartgears_http_port }}'
 
diff --git a/smartgears/smartgears/templates/container.xml.j2 b/smartgears/smartgears/templates/container.xml.j2
index 0f67989d..dd824f60 100644
--- a/smartgears/smartgears/templates/container.xml.j2
+++ b/smartgears/smartgears/templates/container.xml.j2
@@ -25,10 +25,10 @@
 	<property name='SmartGearsDistributionBundle' value='UnBundled' />
     <property name='SmartGearsDistribution' value='{{ smartgears_distribution_version }}' />
 	<publication-frequency>60</publication-frequency>
-{% if smart_executor_install is defined and smart_executor_install %}
+{% if smartgears_define_context_vo %}
 
-  <application mode="{{ smartgears_mode }}" context="{{ smart_executor_context }}">
-{% for context in smart_executor_contexts_list %}
+  <application mode="{{ smartgears_mode }}" context="{{ smartgears_context }}">
+{% for context in smartgears_contexts_list %}
     <scope>/{{ smartgears_infrastructure_name }}/{{ smartgears_vo_name }}{{ context }}</scope>
 {% endfor %}
   </application>

From 611751759c7d1a64e5dcaae4c75b50a29129e180 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 17:31:47 +0200
Subject: [PATCH 25/34] library/roles/tomcat/defaults/main.yml: only ascii and
 numbers for the shutdown password.

---
 tomcat/defaults/main.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tomcat/defaults/main.yml b/tomcat/defaults/main.yml
index 04c7d123..d59f00a3 100644
--- a/tomcat/defaults/main.yml
+++ b/tomcat/defaults/main.yml
@@ -31,7 +31,7 @@ tomcat_ajp_address: 127.0.0.1
 # Disable the shutdown port by default
 #tomcat_shutdown_port: 8005
 tomcat_shutdown_port: -1
-tomcat_shutdown_pwd: "{{ lookup('password', '/tmp/passwordfile chars=ascii_letters,digits,hexdigits') }}"
+tomcat_shutdown_pwd: "{{ lookup('password', '/tmp/passwordfile chars=ascii_letters,digits') }}"
 tomcat_restart_timeout: 300
 tomcat_catalina_home_dir: '/usr/share/tomcat{{ tomcat_version }}'
 tomcat_catalina_base_dir: '/var/lib/tomcat{{ tomcat_version }}'
@@ -102,3 +102,4 @@ tomcat_install_jdbc: False
 tomcat_install_pg_jdbc: '{{ tomcat_install_jdbc }}'
 # Not used yet
 tomcat_install_mysql_jdbc: False
+

From 3021bcc6e377e71cf16b2d95965b1017f17b1bc4 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 18:40:47 +0200
Subject: [PATCH 26/34] library/roles/tomcat: add a new option to the
 tomcat-server.xml template.

---
 tomcat/defaults/main.yml              | 1 +
 tomcat/templates/tomcat-server.xml.j2 | 4 ++--
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/tomcat/defaults/main.yml b/tomcat/defaults/main.yml
index d59f00a3..14b06340 100644
--- a/tomcat/defaults/main.yml
+++ b/tomcat/defaults/main.yml
@@ -33,6 +33,7 @@ tomcat_ajp_address: 127.0.0.1
 tomcat_shutdown_port: -1
 tomcat_shutdown_pwd: "{{ lookup('password', '/tmp/passwordfile chars=ascii_letters,digits') }}"
 tomcat_restart_timeout: 300
+tomcat_max_post_size: 1000000
 tomcat_catalina_home_dir: '/usr/share/tomcat{{ tomcat_version }}'
 tomcat_catalina_base_dir: '/var/lib/tomcat{{ tomcat_version }}'
 tomcat_conf_dir: '/etc/tomcat{{ tomcat_version }}'
diff --git a/tomcat/templates/tomcat-server.xml.j2 b/tomcat/templates/tomcat-server.xml.j2
index 2268cb41..deb06736 100644
--- a/tomcat/templates/tomcat-server.xml.j2
+++ b/tomcat/templates/tomcat-server.xml.j2
@@ -76,7 +76,7 @@
 {% if tomcat_http_enabled %}
     <!-- A http "Connector" using the shared thread pool-->
     <Connector executor="tomcatThreadPool"
-	       enableLookups="false"
+	       enableLookups="false" maxPostSize="{{ tomcat_max_post_size }}"
                maxThreads="{{ tomcat_max_threads }}" connectionTimeout="60000"
 	       URIEncoding="UTF-8" bindOnInit="false" address="{{ tomcat_http_address }}"
                port="{{ tomcat_http_port }}" protocol="HTTP/1.1"
@@ -95,7 +95,7 @@
 {% if tomcat_ajp_enabled %}
     <!-- Define an AJP 1.3 Connector on port {{ tomcat_ajp_port }} -->
     <Connector port="{{ tomcat_ajp_port }}" protocol="AJP/1.3" redirectPort="8443"
-	       enableLookups="false" address="{{ tomcat_ajp_address }}"
+	       enableLookups="false" address="{{ tomcat_ajp_address }}" maxPostSize="{{ tomcat_max_post_size }}"
                maxThreads="{{ tomcat_max_threads }}" connectionTimeout="60000"
 	       URIEncoding="UTF-8" bindOnInit="false" />
 {% endif %}

From bac130afceed9f9e2ec861b7d23fb8c834a68870 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 18:59:16 +0200
Subject: [PATCH 27/34] library/roles/smartgears/smartgears/defaults/main.yml:
 Put the tomcat contexts in a separate library

---
 smartgears/smartgears/defaults/main.yml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/smartgears/smartgears/defaults/main.yml b/smartgears/smartgears/defaults/main.yml
index dde232c4..b473f00a 100644
--- a/smartgears/smartgears/defaults/main.yml
+++ b/smartgears/smartgears/defaults/main.yml
@@ -32,6 +32,8 @@ smartgears_service_name: 'tomcat-instance-{{ smartgears_http_port }}'
 
 smartgears_loglevel: WARN
 
+smartgears_tomcat_contexts:
+  - whn-manager
 smartgears_define_context_vo: False
 smartgears_context: '/smart-executor'
 smartgears_contexts_list:
@@ -53,7 +55,7 @@ http_port: '{{ smartgears_http_port }}'
 
 tomcat_m_webapps_unpack: True
 tomcat_m_instances:
-  - {  http_enabled: True, http_port: '{{ smartgears_http_port }}', http_address: '0.0.0.0', ajp_enabled: False, ajp_port: '8109', ajp_address: '127.0.0.1', restart_timeout: '{{ tomcat_m_restart_timeout }}', shutdown_port: '-1', java_home: '{{ jdk_java_home }}', user: '{{ smartgears_user }}', user_home: '{{ smartgears_user_home }}', user_shell: '{{ tomcat_m_default_user_shell }}', instance_path: '{{ smartgears_instance_path }}', max_threads: '{{ tomcat_m_max_threads }}', autodeploy: '{{ tomcat_m_webapps_autodeploy }}', unpack: '{{ tomcat_m_webapps_unpack }}', default_conf: True, java_opts: '{{ tomcat_m_java_opts }}', java_gc_opts: '{{ tomcat_m_java_gc_opts }}', other_java_opts: '{{ tomcat_m_other_java_opts }}', remote_debugging: '{{ tomcat_m_enable_remote_debugging }}', remote_debugging_port: '{{ smartgears_debugging_port }}' , access_log_enabled: True, log_rotation_freq: daily, log_retain: 30, allowed_hosts: [ '0.0.0.0/0' ], app_contexts: [ 'whn-manager' ], servername: '{{ ansible_fqdn }}' }
+  - {  http_enabled: True, http_port: '{{ smartgears_http_port }}', http_address: '0.0.0.0', ajp_enabled: False, ajp_port: '8109', ajp_address: '127.0.0.1', restart_timeout: '{{ tomcat_m_restart_timeout }}', shutdown_port: '-1', java_home: '{{ jdk_java_home }}', user: '{{ smartgears_user }}', user_home: '{{ smartgears_user_home }}', user_shell: '{{ tomcat_m_default_user_shell }}', instance_path: '{{ smartgears_instance_path }}', max_threads: '{{ tomcat_m_max_threads }}', autodeploy: '{{ tomcat_m_webapps_autodeploy }}', unpack: '{{ tomcat_m_webapps_unpack }}', default_conf: True, java_opts: '{{ tomcat_m_java_opts }}', java_gc_opts: '{{ tomcat_m_java_gc_opts }}', other_java_opts: '{{ tomcat_m_other_java_opts }}', remote_debugging: '{{ tomcat_m_enable_remote_debugging }}', remote_debugging_port: '{{ smartgears_debugging_port }}' , access_log_enabled: True, log_rotation_freq: daily, log_retain: 30, allowed_hosts: [ '0.0.0.0/0' ], app_contexts: [ '{{ smartgears_tomcat_contexts }}' ], servername: '{{ ansible_fqdn }}' }
 
 # To enable debugging:
 # - Set

From e72ba9235535069f58f9014776ea22a7b21c9d81 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 19:17:39 +0200
Subject: [PATCH 28/34] d4science-ghn-cluster: Change the smart_executor
 conditional. library/roles/smartgears/smart_executor/tasks/main.yml: Change
 the conditionals so we can let the role remove the application when
 smart_executor_install is set to 'False'.

---
 smartgears/smart_executor/tasks/main.yml | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/smartgears/smart_executor/tasks/main.yml b/smartgears/smart_executor/tasks/main.yml
index d2d462ce..a3899d12 100644
--- a/smartgears/smart_executor/tasks/main.yml
+++ b/smartgears/smart_executor/tasks/main.yml
@@ -3,9 +3,7 @@
 
     - name: Remove the old smart executor files
       file: path={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }} state=absent
-      when:
-        - smart_executor_install
-        - smartgears_upgrade
+      when: ( not smart_executor_install ) or ( smartgears_upgrade )
   
     # NOTE: Install as the smartgears user so we do not mess with the permissions
     - name: Get the smart executor plugin

From cd67222e4eebad685c6ed406172fa29715b2c690 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 19:23:33 +0200
Subject: [PATCH 29/34] library/roles/smartgears/smart_executor/tasks/main.yml:
 Fix an indentation problem.

---
 smartgears/smart_executor/tasks/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/smartgears/smart_executor/tasks/main.yml b/smartgears/smart_executor/tasks/main.yml
index a3899d12..fc7bb5e1 100644
--- a/smartgears/smart_executor/tasks/main.yml
+++ b/smartgears/smart_executor/tasks/main.yml
@@ -19,4 +19,4 @@
       when: smart_executor_install
       notify: Restart smartgears
   
-    tags: [ 'smartgears', 'smart_executor', 'tomcat' ]
+  tags: [ 'smartgears', 'smart_executor', 'tomcat' ]

From e201856f79e372d798a88a5b0e90fcfddbb5693a Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 19:25:49 +0200
Subject: [PATCH 30/34] library/roles/smartgears/smart_executor/tasks/main.yml:
 Run the tasks as gcube user.

---
 smartgears/smart_executor/tasks/main.yml | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/smartgears/smart_executor/tasks/main.yml b/smartgears/smart_executor/tasks/main.yml
index fc7bb5e1..99d359aa 100644
--- a/smartgears/smart_executor/tasks/main.yml
+++ b/smartgears/smart_executor/tasks/main.yml
@@ -18,5 +18,7 @@
       unarchive: copy=no src={{ smartgears_user_home }}/{{ smart_executor_file }} dest={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }} creates={{ smartgears_instance_path }}/webapps/{{ smart_executor_name }}/WEB-INF/lib
       when: smart_executor_install
       notify: Restart smartgears
-  
+
+  become: True
+  become_user: '{{ d4science_user }}'
   tags: [ 'smartgears', 'smart_executor', 'tomcat' ]

From e642ffb6480cbb0dbb49387e41bf07e9314eaa35 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 19:49:31 +0200
Subject: [PATCH 31/34] infrastructure-services: Some cleanups

---
 smartgears/smartgears/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/smartgears/smartgears/defaults/main.yml b/smartgears/smartgears/defaults/main.yml
index b473f00a..b9448ef2 100644
--- a/smartgears/smartgears/defaults/main.yml
+++ b/smartgears/smartgears/defaults/main.yml
@@ -33,7 +33,7 @@ smartgears_service_name: 'tomcat-instance-{{ smartgears_http_port }}'
 smartgears_loglevel: WARN
 
 smartgears_tomcat_contexts:
-  - whn-manager
+  whn-manager
 smartgears_define_context_vo: False
 smartgears_context: '/smart-executor'
 smartgears_contexts_list:

From 4d53951c939d2f16e158afe49dbef7e1dd436e67 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Fri, 15 Jul 2016 19:55:04 +0200
Subject: [PATCH 32/34] library/roles/smartgears/smartgears/defaults/main.yml:
 The tomcat app contexts is an array.

---
 smartgears/smartgears/defaults/main.yml | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/smartgears/smartgears/defaults/main.yml b/smartgears/smartgears/defaults/main.yml
index b9448ef2..a8ce8e87 100644
--- a/smartgears/smartgears/defaults/main.yml
+++ b/smartgears/smartgears/defaults/main.yml
@@ -32,8 +32,7 @@ smartgears_service_name: 'tomcat-instance-{{ smartgears_http_port }}'
 
 smartgears_loglevel: WARN
 
-smartgears_tomcat_contexts:
-  whn-manager
+smartgears_tomcat_contexts: [ 'whn-manager' ]
 smartgears_define_context_vo: False
 smartgears_context: '/smart-executor'
 smartgears_contexts_list:
@@ -55,7 +54,7 @@ http_port: '{{ smartgears_http_port }}'
 
 tomcat_m_webapps_unpack: True
 tomcat_m_instances:
-  - {  http_enabled: True, http_port: '{{ smartgears_http_port }}', http_address: '0.0.0.0', ajp_enabled: False, ajp_port: '8109', ajp_address: '127.0.0.1', restart_timeout: '{{ tomcat_m_restart_timeout }}', shutdown_port: '-1', java_home: '{{ jdk_java_home }}', user: '{{ smartgears_user }}', user_home: '{{ smartgears_user_home }}', user_shell: '{{ tomcat_m_default_user_shell }}', instance_path: '{{ smartgears_instance_path }}', max_threads: '{{ tomcat_m_max_threads }}', autodeploy: '{{ tomcat_m_webapps_autodeploy }}', unpack: '{{ tomcat_m_webapps_unpack }}', default_conf: True, java_opts: '{{ tomcat_m_java_opts }}', java_gc_opts: '{{ tomcat_m_java_gc_opts }}', other_java_opts: '{{ tomcat_m_other_java_opts }}', remote_debugging: '{{ tomcat_m_enable_remote_debugging }}', remote_debugging_port: '{{ smartgears_debugging_port }}' , access_log_enabled: True, log_rotation_freq: daily, log_retain: 30, allowed_hosts: [ '0.0.0.0/0' ], app_contexts: [ '{{ smartgears_tomcat_contexts }}' ], servername: '{{ ansible_fqdn }}' }
+  - {  http_enabled: True, http_port: '{{ smartgears_http_port }}', http_address: '0.0.0.0', ajp_enabled: False, ajp_port: '8109', ajp_address: '127.0.0.1', restart_timeout: '{{ tomcat_m_restart_timeout }}', shutdown_port: '-1', java_home: '{{ jdk_java_home }}', user: '{{ smartgears_user }}', user_home: '{{ smartgears_user_home }}', user_shell: '{{ tomcat_m_default_user_shell }}', instance_path: '{{ smartgears_instance_path }}', max_threads: '{{ tomcat_m_max_threads }}', autodeploy: '{{ tomcat_m_webapps_autodeploy }}', unpack: '{{ tomcat_m_webapps_unpack }}', default_conf: True, java_opts: '{{ tomcat_m_java_opts }}', java_gc_opts: '{{ tomcat_m_java_gc_opts }}', other_java_opts: '{{ tomcat_m_other_java_opts }}', remote_debugging: '{{ tomcat_m_enable_remote_debugging }}', remote_debugging_port: '{{ smartgears_debugging_port }}' , access_log_enabled: True, log_rotation_freq: daily, log_retain: 30, allowed_hosts: [ '0.0.0.0/0' ], app_contexts: '{{ smartgears_tomcat_contexts }}', servername: '{{ ansible_fqdn }}' }
 
 # To enable debugging:
 # - Set

From a96ff08a5b00b4623531b1d2093431b17eaaede3 Mon Sep 17 00:00:00 2001
From: Roberto Cirillo <roberto.cirillo@isti.cnr.it>
Date: Mon, 18 Jul 2016 18:31:26 +0200
Subject: [PATCH 33/34] 
 ../library/roles/smartgears/smartgears/defaults/main.yml added multiple
 application context on tomcat-multi-instances

---
 smartgears/smartgears/defaults/main.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/smartgears/smartgears/defaults/main.yml b/smartgears/smartgears/defaults/main.yml
index b473f00a..fe02d193 100644
--- a/smartgears/smartgears/defaults/main.yml
+++ b/smartgears/smartgears/defaults/main.yml
@@ -55,7 +55,7 @@ http_port: '{{ smartgears_http_port }}'
 
 tomcat_m_webapps_unpack: True
 tomcat_m_instances:
-  - {  http_enabled: True, http_port: '{{ smartgears_http_port }}', http_address: '0.0.0.0', ajp_enabled: False, ajp_port: '8109', ajp_address: '127.0.0.1', restart_timeout: '{{ tomcat_m_restart_timeout }}', shutdown_port: '-1', java_home: '{{ jdk_java_home }}', user: '{{ smartgears_user }}', user_home: '{{ smartgears_user_home }}', user_shell: '{{ tomcat_m_default_user_shell }}', instance_path: '{{ smartgears_instance_path }}', max_threads: '{{ tomcat_m_max_threads }}', autodeploy: '{{ tomcat_m_webapps_autodeploy }}', unpack: '{{ tomcat_m_webapps_unpack }}', default_conf: True, java_opts: '{{ tomcat_m_java_opts }}', java_gc_opts: '{{ tomcat_m_java_gc_opts }}', other_java_opts: '{{ tomcat_m_other_java_opts }}', remote_debugging: '{{ tomcat_m_enable_remote_debugging }}', remote_debugging_port: '{{ smartgears_debugging_port }}' , access_log_enabled: True, log_rotation_freq: daily, log_retain: 30, allowed_hosts: [ '0.0.0.0/0' ], app_contexts: [ '{{ smartgears_tomcat_contexts }}' ], servername: '{{ ansible_fqdn }}' }
+  - {  http_enabled: True, http_port: '{{ smartgears_http_port }}', http_address: '0.0.0.0', ajp_enabled: False, ajp_port: '8109', ajp_address: '127.0.0.1', restart_timeout: '{{ tomcat_m_restart_timeout }}', shutdown_port: '-1', java_home: '{{ jdk_java_home }}', user: '{{ smartgears_user }}', user_home: '{{ smartgears_user_home }}', user_shell: '{{ tomcat_m_default_user_shell }}', instance_path: '{{ smartgears_instance_path }}', max_threads: '{{ tomcat_m_max_threads }}', autodeploy: '{{ tomcat_m_webapps_autodeploy }}', unpack: '{{ tomcat_m_webapps_unpack }}', default_conf: True, java_opts: '{{ tomcat_m_java_opts }}', java_gc_opts: '{{ tomcat_m_java_gc_opts }}', other_java_opts: '{{ tomcat_m_other_java_opts }}', remote_debugging: '{{ tomcat_m_enable_remote_debugging }}', remote_debugging_port: '{{ smartgears_debugging_port }}' , access_log_enabled: True, log_rotation_freq: daily, log_retain: 30, allowed_hosts: [ '0.0.0.0/0' ], app_contexts:  '{{ smartgears_tomcat_contexts }}' , servername: '{{ ansible_fqdn }}' }
 
 # To enable debugging:
 # - Set

From 5dace451a3b92d394d602c0cbf3eb2793b5c8da9 Mon Sep 17 00:00:00 2001
From: Andrea Dell'Amico <adellam@isti.cnr.it>
Date: Mon, 18 Jul 2016 19:28:35 +0200
Subject: [PATCH 34/34] library/roles/fusiondirectory: Install the
 fusiondirectory packages.

---
 fusiondirectory/defaults/main.yml            | 27 +++++++++++++++
 fusiondirectory/tasks/main.yml               |  6 ++++
 fusiondirectory/tasks/manage-fd-packages.yml | 35 ++++++++++++++++++++
 fusiondirectory/tasks/manage-fd-repos.yml    | 29 ++++++++++++++++
 fusiondirectory/tasks/manage-fd-schemas.yml  | 27 +++++++++++++++
 5 files changed, 124 insertions(+)
 create mode 100644 fusiondirectory/defaults/main.yml
 create mode 100644 fusiondirectory/tasks/main.yml
 create mode 100644 fusiondirectory/tasks/manage-fd-packages.yml
 create mode 100644 fusiondirectory/tasks/manage-fd-repos.yml
 create mode 100644 fusiondirectory/tasks/manage-fd-schemas.yml

diff --git a/fusiondirectory/defaults/main.yml b/fusiondirectory/defaults/main.yml
new file mode 100644
index 00000000..cb0afa20
--- /dev/null
+++ b/fusiondirectory/defaults/main.yml
@@ -0,0 +1,27 @@
+---
+fusiondirectory_install: False
+fusiondirectory_schemas_install: True
+# We use the debian wheezy repo for Ubuntu precise and Ubuntu trusty
+fusiond_repo: 'deb http://repos.fusiondirectory.org/debian-wheezy wheezy main'
+fusiond_extra_repo: 'deb http://repos.fusiondirectory.org/debian-extra wheezy main'
+fusiond_repo_key: 62B4981F
+fusiond_gpg_repo: keys.gnupg.net
+
+fusiondirectory_main_pkgs:
+  - fusiondirectory-archive-keyring
+  - fusiondirectory
+
+fusiondirectory_main_plugins:
+  - fusiondirectory-plugin-nagios
+  - fusiondirectory-plugin-ldapmanager
+  - fusiondirectory-plugin-ssh
+
+fusiondirectory_main_schemas:
+  - fusiondirectory-plugin-nagios-schema
+  - fusiondirectory-schema
+  - fusiondirectory-plugin-ssh-schema
+
+#fusiondirectory_plugins:
+
+#fusiondirectory_schemas:
+
diff --git a/fusiondirectory/tasks/main.yml b/fusiondirectory/tasks/main.yml
new file mode 100644
index 00000000..bfd4b6c7
--- /dev/null
+++ b/fusiondirectory/tasks/main.yml
@@ -0,0 +1,6 @@
+---
+- include: manage-fd-repos.yml
+- include: manage-fd-packages.yml
+- include: manage-fd-schemas.yml
+  when: fusiondirectory_schemas_install
+
diff --git a/fusiondirectory/tasks/manage-fd-packages.yml b/fusiondirectory/tasks/manage-fd-packages.yml
new file mode 100644
index 00000000..84c7999b
--- /dev/null
+++ b/fusiondirectory/tasks/manage-fd-packages.yml
@@ -0,0 +1,35 @@
+---
+- block:
+
+    - name: Install the fusiondirectory main packages
+      apt: name={{ item }} state=present update_cache=yes
+      with_items: '{{ fusiondirectory_main_pkgs }}'
+
+    - name: Install the fusiondirectory main plugins
+      apt: name={{ item }} state=present
+      with_items: '{{ fusiondirectory_main_plugins }}'
+
+    - name: Install the fusiondirectory additional plugins
+      apt: name={{ item }} state=present
+      with_items: '{{ fusiondirectory_plugins | default ([]) }}'
+
+  when: fusiondirectory_install
+  tags: fusiondirectory
+  
+- block:
+
+    - name: Remove the fusiondirectory main plugins
+      apt: name={{ item }} state=absent
+      with_items: '{{ fusiondirectory_main_plugins }}'
+
+    - name: Remove the fusiondirectory additional plugins
+      apt: name={{ item }} state=absent
+      with_items: '{{ fusiondirectory_plugins | default ([]) }}'
+
+    - name: Remove the fusiondirectory main packages
+      apt: name={{ item }} state=absent
+      with_items: '{{ fusiondirectory_main_pkgs }}'
+
+  when: not fusiondirectory_install
+  tags: fusiondirectory
+  
diff --git a/fusiondirectory/tasks/manage-fd-repos.yml b/fusiondirectory/tasks/manage-fd-repos.yml
new file mode 100644
index 00000000..db866703
--- /dev/null
+++ b/fusiondirectory/tasks/manage-fd-repos.yml
@@ -0,0 +1,29 @@
+---
+- block:
+
+    - name: Get the Fusion Directory repo key
+      apt_key: id={{ fusiond_repo_key }} keyserver={{ fusiond_gpg_repo }}
+
+    - name: Install the Fusion Directory repo
+      apt_repository: repo={{ fusiond_repo }}
+
+    - name: Install the Fusion Directory debian extras repo
+      apt_repository: repo={{ fusiond_extra_repo }}
+
+  when: fusiondirectory_install
+  tags: fusiondirectory
+  
+- block:
+
+    - name: Remove the Fusion Directory repo key
+      apt_key: id={{ fusiond_repo_key }} keyserver={{ fusiond_gpg_repo }} state=absent
+
+    - name: Remove the Fusion Directory repo
+      apt_repository: repo={{ fusiond_repo }} state=absent
+
+    - name: Remove the Fusion Directory debian extras repo
+      apt_repository: repo={{ fusiond_extra_repo }} state=absent update_cache=yes
+
+  when: not fusiondirectory_install
+  tags: fusiondirectory
+  
diff --git a/fusiondirectory/tasks/manage-fd-schemas.yml b/fusiondirectory/tasks/manage-fd-schemas.yml
new file mode 100644
index 00000000..1c4328c8
--- /dev/null
+++ b/fusiondirectory/tasks/manage-fd-schemas.yml
@@ -0,0 +1,27 @@
+---
+- block:
+
+    - name: Install the fusiondirectory main schemas
+      apt: name={{ item }} state=present update_cache=yes
+      with_items: '{{ fusiondirectory_main_schemas }}'
+
+    - name: Install the fusiondirectory additional schemas
+      apt: name={{ item }} state=present
+      with_items: '{{ fusiondirectory_schemas | default ([]) }}'
+
+  when: fusiondirectory_schemas_install
+  tags: [ 'fusiondirectory', 'fd_schemas' ]
+  
+- block:
+
+    - name: Remove the fusiondirectory main schemas
+      apt: name={{ item }} state=absent
+      with_items: '{{ fusiondirectory_main_schemas }}'
+
+    - name: Remove the fusiondirectory additional schemas
+      apt: name={{ item }} state=absent
+      with_items: '{{ fusiondirectory_schemas | default ([]) }}'
+
+  when: not fusiondirectory_schemas_install
+  tags: [ 'fusiondirectory', 'fd_schemas' ]
+