Procházet zdrojové kódy

Issue #722: Added tasks for fetching node inventory

Signed-off-by: blesson-james <blesson_james@Dellteam.com>
blesson-james před 3 roky
rodič
revize
0c7ca607a0

+ 82 - 0
telemetry/roles/slurm_telemetry/tasks/get_node_inventory.yml

@@ -0,0 +1,82 @@
+# Copyright 2022 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: Copy slurm telemetry code
+  copy:
+    src: "{{ role_path }}/files/monster"
+    dest: "{{ slurm_telemetry_code_dir }}"
+    mode: "{{ slurm_telemetry_code_dir_mode }}"
+
+- name: Get AWX service IP
+  command: kubectl get svc awx-ui -n {{ awx_namespace }} -o=jsonpath='{.spec.clusterIP}'
+  changed_when: false
+  failed_when: false
+  register: awx_svc_ip
+
+- name: AWX needs to be installed
+  fail:
+    msg: "{{ awx_fail_msg }}"
+  when: not awx_svc_ip.stdout
+
+- name: Get AWX service port
+  command: kubectl get svc awx-ui -n {{ awx_namespace }} -o=jsonpath='{.spec.ports[0].port}'
+  changed_when: false
+  register: awx_svc_port
+
+- name: Get AWX secret
+  shell: >
+    set -o pipefail && \
+    kubectl get secret awx-admin-password -n {{ awx_namespace }} -o jsonpath="{.data.password}" | base64 --decode
+  changed_when: false
+  register: awx_secret
+
+- name: Get node_inventory id
+  shell: >
+    set -o pipefail && \
+    awx --conf.host http://{{ awx_svc_ip.stdout }}:{{ awx_svc_port.stdout }} --conf.username {{ awx_username }} \
+    --conf.password {{ awx_secret.stdout }} --conf.insecure inventory list -f human | grep node_inventory
+  changed_when: false
+  register: inventory_id
+
+- name: Node inventory not found in AWX
+  fail:
+    msg: "{{ node_inventory_fail_msg }}"
+  when: not inventory_id.stdout
+
+- name: Get node_inventory
+  command: awx --conf.host http://{{ awx_svc_ip.stdout }}:{{ awx_svc_port.stdout }} --conf.username {{ awx_username }} \
+    --conf.password {{ awx_secret.stdout }} --conf.insecure hosts list --inventory {{ inventory_id.stdout[0] }}
+  changed_when: false
+  register: node_inventory_output
+
+- name: Save the json data
+  set_fact:
+    node_inventory_jsondata: "{{ node_inventory_output.stdout | from_json }}"
+
+- name: Add temporary hosts
+  add_host:
+    name: "{{ item.name }}"
+    groups: "{{ item.summary_fields.groups.results[0].name }}"
+  with_items: "{{ node_inventory_jsondata | json_query('results') }}"
+  no_log: true
+
+- name: Update slurm telemetry code path
+  replace:
+    path: "{{ role_path }}/files/update_service_tags.yml"
+    regexp: '{{ item }}.*'
+    replace: "{{ item }} {{ slurm_telemetry_code_dir }}/monster/config.yml"
+  with_items:
+    - "dest:"
+    - "path:"