Browse Source

Merge pull request #386 from sakshiarora13/devel

Issue #385: Playbooks to fetch facts for Switches
Lucas A. Wilson 3 years ago
parent
commit
2ba96dfe18
2 changed files with 116 additions and 0 deletions
  1. 32 0
      control_plane/tools/ethernet_facts.yml
  2. 84 0
      control_plane/tools/ib_facts.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 }}"