Changes for Helm v3 compatibility:

 * Helm v3 complains if kubeconfig is world-readable. Setting permissions
   on /root/.kube/config to keep it happy.
 * Add local helm repos in prometheus/spinnaker install tasks
 * Pinning openshift due to regression in kubernetes client

Signed-off-by: Cian Johnston <cian.johnston@est.tech>
Change-Id: Ie0dc3d9c7af4eda5a4d56461f9e3e4341ea7a12c
diff --git a/apps/prometheus/kubespray/playbooks/roles/install/tasks/main.yaml b/apps/prometheus/kubespray/playbooks/roles/install/tasks/main.yaml
index 98aca07..ed9a2c9 100644
--- a/apps/prometheus/kubespray/playbooks/roles/install/tasks/main.yaml
+++ b/apps/prometheus/kubespray/playbooks/roles/install/tasks/main.yaml
@@ -36,6 +36,11 @@
       src: "index.yaml.j2"
       dest: "{{ engine_workspace }}/offline/charts/stable/index.yaml"
       force: true
+
+  - name: Create local repo index (empty initially)
+    command: "helm repo index {{ engine_workspace }}/offline/charts/local/"
+    args:
+      creates: "{{ engine_workspace }}/offline/charts/local/index.yaml"
   when: execution_mode == "offline-deployment"
 
 - name: Initialize Helm
@@ -59,6 +64,15 @@
     and execution_mode == "online-deployment"
     and helm_repo_list_result is not search(stable_repo_url)
 
+- name: Add local helm repo (helm v3+)
+  command: "helm repo add local {{ local_repo_url }}"
+  register: helm_repo_add_local_result
+  changed_when: true
+  when: >
+    helm_version is version('v3.0.0', '>=')
+    and execution_mode == "offline-deployment"
+    and helm_repo_list_result is not search(local_repo_url)
+
 - name: Clone Helm Charts repository
   git:
     repo: "{{ helm_charts_git_url }}"
diff --git a/apps/spinnaker/kubespray/playbooks/roles/install/tasks/main.yml b/apps/spinnaker/kubespray/playbooks/roles/install/tasks/main.yml
index ddff98e..e90fbad 100644
--- a/apps/spinnaker/kubespray/playbooks/roles/install/tasks/main.yml
+++ b/apps/spinnaker/kubespray/playbooks/roles/install/tasks/main.yml
@@ -36,6 +36,10 @@
       src: "index.yaml.j2"
       dest: "{{ engine_workspace }}/offline/charts/stable/index.yaml"
       force: true
+
+  - name: Create local repo index (empty initially)
+    command: "helm repo index {{ engine_workspace }}/offline/charts/local/"
+    creates: "{{ engine_workspace }}/offline/charts/local/index.yaml"
   when: execution_mode == "offline-deployment"
 
 - name: Initialize Helm
@@ -59,6 +63,15 @@
     and execution_mode == "online-deployment"
     and helm_repo_list_result is not search(stable_repo_url)
 
+- name: Add local helm repo (helm v3+)
+  command: "helm repo add local {{ local_repo_url }}"
+  register: helm_repo_add_local_result
+  changed_when: true
+  when: >
+    helm_version is version('v3.0.0', '>=')
+    and execution_mode == "offline-deployment"
+    and helm_repo_list_result is not search(local_repo_url)
+
 - name: Clone Helm Charts repository
   git:
     repo: "{{ helm_charts_git_url }}"
diff --git a/playbooks/roles/postinstall/tasks/configure-jumphost.yml b/playbooks/roles/postinstall/tasks/configure-jumphost.yml
index a5dc9a6..4ba1e90 100644
--- a/playbooks/roles/postinstall/tasks/configure-jumphost.yml
+++ b/playbooks/roles/postinstall/tasks/configure-jumphost.yml
@@ -22,7 +22,7 @@
 
 - name: Install openshift
   pip:
-    name: openshift
+    name: "openshift=={{ openshift_version }}"
 
 - name: Ensure /root/.kube folder exists and empty
   file:
@@ -39,7 +39,7 @@
     src: "{{ engine_cache }}/repos/kubespray/inventory/engine/artifacts/admin.conf"
     dest: "/root/.kube/config"
     owner: "root"
-    mode: 0644
+    mode: 0600
 
 - name: Download kubectl and place it to /usr/local/bin
   get_url:
diff --git a/playbooks/roles/postinstall/vars/main.yaml b/playbooks/roles/postinstall/vars/main.yaml
index 9c1177b..01abd5b 100644
--- a/playbooks/roles/postinstall/vars/main.yaml
+++ b/playbooks/roles/postinstall/vars/main.yaml
@@ -18,5 +18,8 @@
 # ============LICENSE_END=========================================================
 
 jumphost: "{{ 'jumphost' if provisioner_type == 'heat' else 'localhost' }}"
+# NOTE (cian): pinning openshift due to regression in 0.12
+# Ref: https://github.com/ansible-collections/community.kubernetes/issues/283
+openshift_version: "0.11"
 
 # vim: set ts=2 sw=2 expandtab: