Adding support for helm plugins 58/75958/3
authorMichal Ptacek <m.ptacek@partner.samsung.com>
Thu, 17 Jan 2019 20:39:46 +0000 (20:39 +0000)
committerMichal Ptacek <m.ptacek@partner.samsung.com>
Sun, 27 Jan 2019 12:03:30 +0000 (13:03 +0100)
Proprietary plugins can be used along with helm, in addition
to that building of local helm repository can be achieved by
using different target or list of targets.

Change-Id: If421133b9cc8bcfa47c3e7c14e6712520231e39c
Signed-off-by: Michal Ptacek <m.ptacek@partner.samsung.com>
Issue-ID: OOM-1589

ansible/group_vars/all.yml
ansible/roles/application-install/tasks/install.yml
ansible/roles/application-install/tasks/pre-install.yml

index 425f4f1..0a73b63 100755 (executable)
@@ -105,6 +105,18 @@ app_helm_charts_infra_directory:
 # e.g. app_helm_chart_name: onap
 app_helm_chart_name:
 
+# Targets for helm charts repository build
+# e.g. for ONAP Casablanca
+# app_helm_build_targets:
+#   - all
+#   - onap
+app_helm_build_targets:
+
+# Directory with helm plugins
+# It's an optional parameter used e.g. in OOM Casablanca
+# app_helm_plugins_directory: "{{ app_helm_charts_infra_directory}}/kubernetes/helm/plugins/"
+app_helm_plugins_directory:
+
 # Helm release name (visible in POD names) used by Helm
 # e.g. app_helm_release_name: "{{ project_configuration }}"
 app_helm_release_name:
index 7ff6b62..d385b44 100644 (file)
 - name: Helm Add Repo
   command: "{{ helm_bin_dir }}/helm repo add {{ helm_repository_name }} {{ helm_repository_url }}"
 
-- name: Helm Make All
+- name: Build local helm repository
   make:
     chdir: "{{ app_helm_charts_infra_directory }}"
-    target: all
+    target: "{{ item }}"
+  with_items: "{{ app_helm_build_targets }}"
   environment:
     PATH: "{{ helm_bin_dir }}:{{ ansible_env.PATH }}"
 
index b782ca7..88a95ea 100644 (file)
         src: "{{ app_helm_charts_install_directory }}.tgz"
         dest: "{{ app_helm_charts_infra_directory }}"
 
+
+- name: Install helm plugins if needed
+  block:
+     - name: Ensure that dir for helm plugins exists
+       file:
+         path: "~/.helm/plugins"
+         state: directory
+         mode: 0755
+     - name: Register all plugins to be inserted by dir names
+       find:
+         paths: "{{ app_helm_plugins_directory }}"
+         file_type: "directory"
+       register: list_of_plugins
+     - name: Install all helm plugins from {{ app_helm_plugins_directory }} dir
+       command: "{{ helm_bin_dir }}/helm plugin install {{ item.path }}"
+       with_items: "{{ list_of_plugins.files }}"
+       register: helm_plugin_install_result
+       failed_when: "helm_plugin_install_result.rc > 0 and helm_plugin_install_result.stderr != 'Error: plugin already exists'"
+  become: true
+  when: app_helm_plugins_directory is defined and app_helm_plugins_directory is not none
+
 - name: "Execute custome role {{ application_pre_install_role }} if defined."
   include_tasks: custom_role.yml
   vars:
     application_custom_role: "{{ application_pre_install_role }}"
+