Browse Source

Issue #387: Added retries for helm installation tasks and fixed other minor bugs

Signed-off-by: blesson-james <blesson_james@Dellteam>
Lucas A. Wilson 3 years ago
parent
commit
2f5ef65e32

+ 2 - 2
control_plane/roles/control_plane_device/tasks/mngmnt_network_container_image.yml

@@ -29,8 +29,8 @@
 - name: Update omnia project path in k8s_mngmnt_network.yml
   replace:
     path: "{{ role_path }}/files/k8s_mngmnt_network.yml"
-    regexp: 'path: /root/omnia'
-    replace: "path: {{ role_path.split('control_plane')[0] }}"
+    regexp: '        - name: omnia-storage\n          hostPath:\n            path:.*'
+    replace: "        - name: omnia-storage\n          hostPath:\n            path: {{ role_path.split('control_plane')[0] }}"
 
 - name: Deploy mngmnt_network pod
   command: "kubectl apply -f {{ role_path }}/files/k8s_mngmnt_network.yml"

+ 2 - 2
control_plane/roles/control_plane_ib/tasks/infiniband_container_image.yml

@@ -29,8 +29,8 @@
 - name: Update omnia project path in k8s_infiniband.yml
   replace:
     path: "{{ role_path }}/files/k8s_infiniband.yml"
-    regexp: 'path: /root/omnia'
-    replace: "path: {{ role_path.split('control_plane')[0] }}"
+    regexp: '        - name: omnia-storage\n          hostPath:\n            path:.*'
+    replace: "        - name: omnia-storage\n          hostPath:\n            path: {{ role_path.split('control_plane')[0] }}"
 
 - name: Deploy infiniband pod
   command: "kubectl apply -f {{ role_path }}/files/k8s_infiniband.yml"

+ 3 - 0
control_plane/roles/control_plane_k8s/tasks/k8s_helm.yml

@@ -31,6 +31,9 @@
 - name: Install helm
   command: "/bin/bash {{ helm_installer_file_dest }}"
   changed_when: true
+  register: install_helm_result
+  until: install_helm_result is not failed
+  retries: 20
 
 - name: Helm - add stable repo
   command: "helm repo add stable '{{ helm_stable_repo_url }}'"

+ 2 - 2
control_plane/roles/provision_cobbler/tasks/cobbler_image.yml

@@ -29,8 +29,8 @@
 - name: Update omnia project path in k8s_cobbler.yml
   replace:
     path: "{{ role_path }}/files/k8s_cobbler.yml"
-    regexp: 'path: /root/omnia'
-    replace: "path: {{ role_path.split('control_plane')[0] }}"
+    regexp: '        - name: omnia-storage\n          hostPath:\n            path:.*'
+    replace: "        - name: omnia-storage\n          hostPath:\n            path: {{ role_path.split('control_plane')[0] }}"
 
 - name: Deploy cobbler pod
   command: "kubectl apply -f {{ role_path }}/files/k8s_cobbler.yml"

+ 32 - 0
control_plane/tools/ethernet_facts.yml

@@ -0,0 +1,32 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+-  name: Ethernet Facts 
+   hosts: all
+   gather_facts: false
+   connection: network_cli
+   vars:
+     ansible_network_os: dellemc.os10.os10
+   collections:
+    - dellemc.os10
+   tasks:
+     - name: Fetch facts for- {{ inventory_hostname }}
+       dellos10_facts:
+         gather_subset: all
+       register: facts
+
+     - name: Show Facts for- {{ inventory_hostname }}
+       debug:
+         msg: "{{ facts }}"

+ 84 - 0
control_plane/tools/ib_facts.yml

@@ -0,0 +1,84 @@
+# Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+---
+
+- name: Infiniband Facts
+  hosts: all
+  gather_facts: no
+  connection: local
+  tasks:
+    - name: Set credentials and variables
+      set_fact:
+        username: "{{ lookup('env','ANSIBLE_NET_USERNAME') }}"
+        password: "{{ lookup('env','ANSIBLE_NET_PASSWORD') }}"
+        filtered_dict: {}
+      no_log: true
+
+    - name: Authenticate
+      block:
+        - name: Authenticate to switch- "{{ inventory_hostname }}"
+          uri:
+            url: http://{{ inventory_hostname }}/admin/launch?script=rh&template=login&action=login
+            method: POST
+            body_format: form-urlencoded
+            body:
+              f_user_id: "{{ username }}"
+              f_password: "{{ password }}"
+              enter: Sign in
+            status_code: 302
+          register: login
+          no_log: true
+
+        - name: Verify authentication status
+          fail:
+            msg: "Authentication failed"
+          when: login.set_cookie is undefined
+
+      rescue:
+        - name: Filtered response creation
+          set_fact:
+            filtered_dict: "{{filtered_dict |combine({item.key: item.value})}}"
+          when: item.key not in 'invocation'
+          with_dict: "{{ login }}"
+          no_log: true
+
+        - name: Authentication failure response
+          fail: 
+            msg: "{{ filtered_dict }}"
+
+    - name: Fetch facts from- "{{ inventory_hostname }}"
+      uri:
+        url: http://{{ inventory_hostname }}/admin/launch?script=json
+        method: POST
+        body_format: json
+        headers:
+          Cookie: "{{ login.set_cookie.split(';')[0] }}"
+        body:
+          {
+          "commands": 
+           [
+             "show running-config",
+             "show version",
+             "show inventory",
+             "show interfaces ib status"
+           ]
+          }
+      register: facts
+
+    - name: Show Facts from- "{{ inventory_hostname }}"
+      debug:
+        msg: "{{  item.data }}"
+      with_items: "{{ facts.json.results }}"
+      loop_control:
+        label: "{{ item.executed_command }}"