Ansible 네트워크 자동화 – 6

Ansible 네트워크 자동화 – 6

앤시블을 이용한 익스트림 스위치 점검하기

익스트림 스위치의 팬, 온도, 파워서플라이 점검을 위해 playbook 작성한다. 임의의 명령을 실행하기 위해서 exos_command 모듈을 사용한다.

만약, extreme 스위치 지원을 위한 모듈이 없으면, ansible-galaxy 명령으로 컬렉션을 설치한다.

$ ansible-galaxy collection install extreme.exos

플레이북을 아래처럼 작성했다.

---
- name: Extreme Switch Check Playbook
  connection: ansible.netcommon.network_cli
  gather_facts: false
  hosts: all

  tasks:
    - name: Check Extreme switches...
      exos_command:
        commands:
          - show fan
            #- show temp
            #- show power
      register: result

    - name: output
      debug:
        var: result.stdout_lines[0]

아래는 작성한 인벤토리 파일의 일부이다.

$ cat inventory.yml
---
wifi_l3:
  hosts:
    WIFI_Backbone:
      ansible_host: 192.168.245.62
  vars:
    ansible_network_os: extreme.exos.exos
    ansible_user: admin
    ansible_password: !vault |
          $ANSIBLE_VAULT;1.2;AES256;admin
          65313661663130383939613338633237313230386365653739383831653364343634333230366130
          3334666636373466626661653634373032666139393462310a383233303037316162366565363936
          37366331366566633030373364623663633836653431316561656166353531636133323938363233
          3464373339303739370a306362363030366635373063376231613731303830353736313463306337
          3462

wifi_l2:
  hosts:
    w_l2_1:
      ansible_host: 192.168.245.1
    w_l2_2:
      ansible_host: 192.168.245.2
...

    w_l2_37:
      ansible_host: 192.168.245.37
  vars:
    ansible_network_os: extreme.exos.exos
    ansible_user: admin
    ansible_password: !vault |
          $ANSIBLE_VAULT;1.2;AES256;admin
          65313661663130383939613338633237313230386365653739383831653364343634333230366130
          3334666636373466626661653634373032666139393462310a383233303037316162366565363936
          37366331366566633030373364623663633836653431316561656166353531636133323938363233
          3464373339303739370a306362363030366635373063376231613731303830353736313463306337
          3462

플레이북 실행했더니 아래처럼 오류가 발생했다.

$ ansible-playbook book-check.yml -i inventory.yml -l wifi_l3  --vault-id admin@vault-pw.txt

PLAY [Extreme Switch Check Playbook] ***************************************************************************

TASK [Check Extreme switches...] *******************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.module_utils.connection.ConnectionError: [Errno -3] Temporary failure in name resolution
fatal: [WIFI_Backbone]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"}, "changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/home/snowfox/.ansible/tmp/ansible-local-1910xnwo29tt/ansible-tmp-1617855926.5648549-210651342340014/AnsiballZ_exos_command.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/home/snowfox/.ansible/tmp/ansible-local-1910xnwo29tt/ansible-tmp-1617855926.5648549-210651342340014/AnsiballZ_exos_command.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/snowfox/.ansible/tmp/ansible-local-1910xnwo29tt/ansible-tmp-1617855926.5648549-210651342340014/AnsiballZ_exos_command.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible.modules.network.exos.exos_command', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_exos_command_payload_s_w7l8j4/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 221, in <module>\n  File \"/tmp/ansible_exos_command_payload_s_w7l8j4/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 191, in main\n  File \"/tmp/ansible_exos_command_payload_s_w7l8j4/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 187, in run_commands\n  File \"/tmp/ansible_exos_command_payload_s_w7l8j4/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 164, in get_connection\n  File \"/tmp/ansible_exos_command_payload_s_w7l8j4/ansible_exos_command_payload.zip/ansible/module_utils/connection.py\", line 185, in __rpc__\nansible.module_utils.connection.ConnectionError: [Errno -3] Temporary failure in name resolution\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}

PLAY RECAP *****************************************************************************************************
WIFI_Backbone              : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

플레이북의 connection 부분에서 오류가 발생한 것으로 생각되어, connection 부분을 주석처리했다.

  # connection: ansible.netcommon.network_cli

다시 플레이북 실행하면 아래처럼 sshpass 프로그램을 설치하라는 메시지 보임.

$ ansible-playbook book-check.yml -i inventory.yml -l wifi_l3  --vault-id admin@vault-pw.txt

PLAY [Extreme Switch Check Playbook] ***************************************************************************

TASK [Check Extreme switches...] *******************************************************************************
fatal: [WIFI_Backbone]: FAILED! => {"msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"}

PLAY RECAP *****************************************************************************************************
WIFI_Backbone              : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

sshpass 패키지를 설치한다.

$ sudo apt install sshpass

플레이북의 connection 부분의 주석을 제거한다. 이제, 최종 버전의 플레이북은 아래와 같다.

$ cat book-check.yml
---

- name: Extreme Switch Check Playbook
  connection: ansible.netcommon.network_cli
  gather_facts: false
  hosts: all

  tasks:
    - name: Check Extreme switches...
      exos_command:
        commands:
          - show fan
          - show temp
          - show power
      register: result

    - name: output
      debug:
        var: result.stdout_lines

이제, 플레이북을 실행하면 아래처럼 원하는 결과를 볼 수 있다.

$ ansible-playbook book-check.yml -i inventory.yml -l WIFI_Backbone  --vault-id admin@vault-pw.txt

PLAY [Extreme Switch Check Playbook] ***************************************************************************

TASK [Check Extreme switches...] *******************************************************************************
ok: [WIFI_Backbone]

TASK [output] **************************************************************************************************
ok: [WIFI_Backbone] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 6",
            " PartInfo:               1126G-00738 450307-00-03",
            " Revision:               3.0",
            " Odometer:               3107 days 21 hours 30 minutes  since Jun-24-2011",
            " Upper-Left   Fan-1:     Operational at 3060 RPM",
            " Lower-Left   Fan-2:     Operational at 3060 RPM",
            " Upper-Center Fan-3:     Operational at 3000 RPM",
            " Lower-Center Fan-4:     Operational at 3000 RPM",
            " Upper-Right  Fan-5:     Operational at 3000 RPM",
            " Lower-Right  Fan-6:     Operational at 3060 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Slot-1         : G24Xc                  26.50    Normal   -10    0-50  60",
            "Slot-2         : G24Xc                  25.50    Normal   -10    0-50  60",
            "Slot-3         : ",
            "Slot-4         : ",
            "Slot-5         : 10G8Xc                 30.50    Normal   -10    0-50  60",
            "Slot-6         : G48Tc                  28.00    Normal   -10    0-50  60",
            "MSM-A          : MSM-48c                38.00    Normal   -10    0-50  60",
            "MSM-B          : MSM-48c                38.00    Normal   -10    0-50  60",
            "PSUCTRL-1      :                        32.06    Normal   -10    0-50  60",
            "PSUCTRL-1      : ",
            "PSUCTRL-2      :                        33.92    Normal   -10    0-50  60",
            "PSUCTRL-2      :"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : PS 2431 1130J-02193 4300-00161",
            " Revision          : 5.0",
            " Odometer          : 3133 days 19 hours 30 minutes ",
            " Temperature       : 31.0 deg C",
            " Fan 1             : 6473 RPM",
            " Fan 2             : 6473 RPM",
            " Input             : 232.00 V AC",
            "",
            "PowerSupply 2 information:",
            " State             : Powered On",
            " PartInfo          : PS 2431 1124J-02096 4300-00161",
            " Revision          : 5.0",
            " Odometer          : 3144 days 13 hours 30 minutes ",
            " Temperature       : 33.0 deg C",
            " Fan 1             : 6732 RPM",
            " Fan 2             : 6473 RPM",
            " Input             : 232.00 V AC",
            "",
            "PowerSupply 3 information:",
            " State             : Empty",
            "",
            "PowerSupply 4 information:",
            " State             : Powered On",
            " PartInfo          : PS 2431 1124J-02058 4300-00161",
            " Revision          : 5.0",
            " Odometer          : 3144 days 13 hours 30 minutes ",
            " Temperature       : 33.0 deg C",
            " Fan 1             : 6233 RPM",
            " Fan 2             : 6233 RPM",
            " Input             : 232.00 V AC",
            "",
            "PowerSupply 5 information:",
            " State             : Empty",
            "",
            "PowerSupply 6 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}

PLAY RECAP *****************************************************************************************************
WIFI_Backbone              : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

플레이북 실행시 아래와 같은 오류가 발생한다면,

$ ansible-playbook book-check.yml -i inventory.yml -l w_l2_4  --vault-id admin@vault-pw.txt

PLAY [Extreme Switch Check Playbook] ***************************************************************************

TASK [Check Extreme switches...] *******************************************************************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: The ssh-rsa key fingerprint is b'05cdc22ae2e047d00f80df36bac04848'.
fatal: [w_l2_4]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"}, "changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4405xkf_p4bb/ansible-tmp-1617868410.5432293-83755622591598/AnsiballZ_exos_command.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4405xkf_p4bb/ansible-tmp-1617868410.5432293-83755622591598/AnsiballZ_exos_command.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4405xkf_p4bb/ansible-tmp-1617868410.5432293-83755622591598/AnsiballZ_exos_command.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible.modules.network.exos.exos_command', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_exos_command_payload_zvf8yvaj/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 221, in <module>\n  File \"/tmp/ansible_exos_command_payload_zvf8yvaj/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 191, in main\n  File \"/tmp/ansible_exos_command_payload_zvf8yvaj/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 187, in run_commands\n  File \"/tmp/ansible_exos_command_payload_zvf8yvaj/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 164, in get_connection\n  File \"/tmp/ansible_exos_command_payload_zvf8yvaj/ansible_exos_command_payload.zip/ansible/module_utils/connection.py\", line 185, in __rpc__\nansible.module_utils.connection.ConnectionError: paramiko: The authenticity of host '192.168.245.4' can't be established.\nThe ssh-rsa key fingerprint is b'05cdc22ae2e047d00f80df36bac04848'.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}

PLAY RECAP *****************************************************************************************************
w_l2_4                     : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0

위의 에러는 ssh 접속을 한번도 하지 않아 발생함. 쉘에서 ssh 접속 작업을 해주면 오류가 발생하지 않는다.

$ ssh admin@192.168.245.4
The authenticity of host '192.168.245.4 (192.168.245.4)' can't be established.
RSA key fingerprint is SHA256:n85V8oxBp1zoRKVuET2AwjzHzrIDIb1d7gSMOE53Ccs.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.245.4' (RSA) to the list of known hosts.

이렇게 접속해보고 다시 시도하면 잘 된다.

$ ansible-playbook book-check.yml -i inventory.yml -l w_l2_4  --vault-id admin@vault-pw.txt

PLAY [Extreme Switch Check Playbook] ***************************************************************************

TASK [Check Extreme switches...] *******************************************************************************
ok: [w_l2_4]

TASK [output] **************************************************************************************************
ok: [w_l2_4] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               25.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}

PLAY RECAP *****************************************************************************************************
w_l2_4                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

인벤토리에 등록된 wifi_l2 그룹의 모든 장비를 점검하기위해 플레이북을 실행한다.

$ ansible-playbook book-check.yml -i inventory.yml -l wifi_l2  --vault-id admin@vault-pw.txt

PLAY [Extreme Switch Check Playbook] ***************************************************************************

TASK [Check Extreme switches...] *******************************************************************************
ok: [w_l2_1]
ok: [w_l2_2]
ok: [w_l2_4]
ok: [w_l2_3]
ok: [w_l2_5]
ok: [w_l2_7]
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: ansible.module_utils.connection.ConnectionError: [Errno None] Unable to connect to port 22 on 192.168.245.8
fatal: [w_l2_8]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"}, "changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869098.102443-185559981947035/AnsiballZ_exos_command.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869098.102443-185559981947035/AnsiballZ_exos_command.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869098.102443-185559981947035/AnsiballZ_exos_command.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible.modules.network.exos.exos_command', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_exos_command_payload_obhmicmj/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 221, in <module>\n  File \"/tmp/ansible_exos_command_payload_obhmicmj/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 191, in main\n  File \"/tmp/ansible_exos_command_payload_obhmicmj/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 187, in run_commands\n  File \"/tmp/ansible_exos_command_payload_obhmicmj/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 164, in get_connection\n  File \"/tmp/ansible_exos_command_payload_obhmicmj/ansible_exos_command_payload.zip/ansible/module_utils/connection.py\", line 185, in __rpc__\nansible.module_utils.connection.ConnectionError: [Errno None] Unable to connect to port 22 on 192.168.245.8\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
ok: [w_l2_9]
ok: [w_l2_10]
ok: [w_l2_11]
ok: [w_l2_12]
ok: [w_l2_13]
ok: [w_l2_14]
ok: [w_l2_15]
ok: [w_l2_16]
ok: [w_l2_17]
ok: [w_l2_18]
ok: [w_l2_19]
ok: [w_l2_21]
ok: [w_l2_20]
ok: [w_l2_24]
ok: [w_l2_22]
ok: [w_l2_23]
ok: [w_l2_26]
ok: [w_l2_25]
ok: [w_l2_27]
ok: [w_l2_29]
ok: [w_l2_30]
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: The ssh-rsa key fingerprint is b'103683633be7b3188de49779cbb99a71'.
fatal: [w_l2_32]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"}, "changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869144.9660954-54392215703597/AnsiballZ_exos_command.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869144.9660954-54392215703597/AnsiballZ_exos_command.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869144.9660954-54392215703597/AnsiballZ_exos_command.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible.modules.network.exos.exos_command', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_exos_command_payload_z_fis9mj/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 221, in <module>\n  File \"/tmp/ansible_exos_command_payload_z_fis9mj/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 191, in main\n  File \"/tmp/ansible_exos_command_payload_z_fis9mj/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 187, in run_commands\n  File \"/tmp/ansible_exos_command_payload_z_fis9mj/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 164, in get_connection\n  File \"/tmp/ansible_exos_command_payload_z_fis9mj/ansible_exos_command_payload.zip/ansible/module_utils/connection.py\", line 185, in __rpc__\nansible.module_utils.connection.ConnectionError: paramiko: The authenticity of host '192.168.245.32' can't be established.\nThe ssh-rsa key fingerprint is b'103683633be7b3188de49779cbb99a71'.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
ok: [w_l2_31]
ok: [w_l2_33]
ok: [w_l2_34]
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: The ssh-rsa key fingerprint is b'811c7430fec13ec93948d32c238973ee'.
fatal: [w_l2_35]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python3"}, "changed": false, "module_stderr": "Traceback (most recent call last):\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869151.2843916-116017751998271/AnsiballZ_exos_command.py\", line 102, in <module>\n    _ansiballz_main()\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869151.2843916-116017751998271/AnsiballZ_exos_command.py\", line 94, in _ansiballz_main\n    invoke_module(zipped_mod, temp_path, ANSIBALLZ_PARAMS)\n  File \"/home/snowfox/.ansible/tmp/ansible-local-4548l9gf2u0w/ansible-tmp-1617869151.2843916-116017751998271/AnsiballZ_exos_command.py\", line 40, in invoke_module\n    runpy.run_module(mod_name='ansible.modules.network.exos.exos_command', init_globals=None, run_name='__main__', alter_sys=True)\n  File \"/usr/lib/python3.8/runpy.py\", line 207, in run_module\n    return _run_module_code(code, init_globals, run_name, mod_spec)\n  File \"/usr/lib/python3.8/runpy.py\", line 97, in _run_module_code\n    _run_code(code, mod_globals, init_globals,\n  File \"/usr/lib/python3.8/runpy.py\", line 87, in _run_code\n    exec(code, run_globals)\n  File \"/tmp/ansible_exos_command_payload_x5fymbpx/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 221, in <module>\n  File \"/tmp/ansible_exos_command_payload_x5fymbpx/ansible_exos_command_payload.zip/ansible/modules/network/exos/exos_command.py\", line 191, in main\n  File \"/tmp/ansible_exos_command_payload_x5fymbpx/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 187, in run_commands\n  File \"/tmp/ansible_exos_command_payload_x5fymbpx/ansible_exos_command_payload.zip/ansible/module_utils/network/exos/exos.py\", line 164, in get_connection\n  File \"/tmp/ansible_exos_command_payload_x5fymbpx/ansible_exos_command_payload.zip/ansible/module_utils/connection.py\", line 185, in __rpc__\nansible.module_utils.connection.ConnectionError: paramiko: The authenticity of host '192.168.245.35' can't be established.\nThe ssh-rsa key fingerprint is b'811c7430fec13ec93948d32c238973ee'.\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}
ok: [w_l2_36]
ok: [w_l2_37]

TASK [output] **************************************************************************************************
ok: [w_l2_4] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               24.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_2] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               22.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_1] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               26.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_3] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               25.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_5] => {
    "result.stdout_lines": [
        [
            "FanTray-1 information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM",
            "",
            "FanTray-2 information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM",
            "",
            "FanTray-3 information:",
            " State:                  Empty",
            "",
            "FanTray-4 information:",
            " State:                  Empty",
            "",
            "FanTray-5 information:",
            " State:                  Empty",
            "",
            "FanTray-6 information:",
            " State:                  Empty",
            "",
            "FanTray-7 information:",
            " State:                  Empty",
            "",
            "FanTray-8 information:",
            " State:                  Empty"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Slot-1         : X440-24p               26.50    Normal   -10    0-48  55",
            "Slot-2         : X440-24p               26.50    Normal   -10    0-48  55",
            "Slot-3         : ",
            "Slot-4         : ",
            "Slot-5         : ",
            "Slot-6         : ",
            "Slot-7         : ",
            "Slot-8         :"
        ],
        [
            "PSU-1 or  PSU-2 or",
            "                     Internal  External  External  External  Power",
            "Slots  Type          PSU       PSU       PSU       PSU       Usage",
            "-------------------------------------------------------------------",
            "Slot-1 X440-24p        P         -         -         -         N/A",
            "Slot-2 X440-24p        P         -         -         -         N/A",
            "Slot-3 ",
            "Slot-4 ",
            "Slot-5 ",
            "Slot-6 ",
            "Slot-7 ",
            "Slot-8 ",
            "",
            "",
            "Flags : (P) Power available, (F) Failed or no power,",
            "        (O) 48V powered off when 2 or 3 external PSUs are powered on,",
            "        (-) Empty"
        ]
    ]
}
ok: [w_l2_7] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               27.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_9] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               26.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_10] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               27.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_11] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               26.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_12] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               26.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_13] => {
    "result.stdout_lines": [
        [
            "FanTray-1 information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM",
            "",
            "FanTray-2 information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM",
            "",
            "FanTray-3 information:",
            " State:                  Empty",
            "",
            "FanTray-4 information:",
            " State:                  Empty",
            "",
            "FanTray-5 information:",
            " State:                  Empty",
            "",
            "FanTray-6 information:",
            " State:                  Empty",
            "",
            "FanTray-7 information:",
            " State:                  Empty",
            "",
            "FanTray-8 information:",
            " State:                  Empty"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Slot-1         : X440-24p               35.00    Normal   -10    0-48  55",
            "Slot-2         : X440-24p               36.00    Normal   -10    0-48  55",
            "Slot-3         : ",
            "Slot-4         : ",
            "Slot-5         : ",
            "Slot-6         : ",
            "Slot-7         : ",
            "Slot-8         :"
        ],
        [
            "PSU-1 or  PSU-2 or",
            "                     Internal  External  External  External  Power",
            "Slots  Type          PSU       PSU       PSU       PSU       Usage",
            "-------------------------------------------------------------------",
            "Slot-1 X440-24p        P         -         -         -         N/A",
            "Slot-2 X440-24p        P         -         -         -         N/A",
            "Slot-3 ",
            "Slot-4 ",
            "Slot-5 ",
            "Slot-6 ",
            "Slot-7 ",
            "Slot-8 ",
            "",
            "",
            "Flags : (P) Power available, (F) Failed or no power,",
            "        (O) 48V powered off when 2 or 3 external PSUs are powered on,",
            "        (-) Empty"
        ]
    ]
}
ok: [w_l2_14] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               39.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_15] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               29.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_16] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               28.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_17] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               29.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_22] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               28.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_21] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               32.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_19] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               27.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_20] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               29.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_18] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               29.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_24] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               40.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_26] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               32.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_25] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               25.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_27] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               27.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_23] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               27.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_29] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               23.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_30] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               25.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_31] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               35.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_33] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               30.00    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_34] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               28.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_37] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Unsupported",
            " NumFan:                 0"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X430-8p                47.50    Normal    15   20-64  69"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_36] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               30.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}

PLAY RECAP *****************************************************************************************************
w_l2_1                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_10                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_11                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_12                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_13                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_14                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_15                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_16                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_17                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_18                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_19                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_2                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_20                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_21                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_22                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_23                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_24                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_25                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_26                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_27                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_29                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_3                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_30                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_31                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_32                    : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
w_l2_33                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_34                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_35                    : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
w_l2_36                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_37                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_4                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_5                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_7                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_8                     : ok=0    changed=0    unreachable=0    failed=1    skipped=0    rescued=0    ignored=0
w_l2_9                     : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

잘된다!!! 하지만, 위의 결과를 보면 3개의 장비에서 failed가 발생했다. w_l2_32, w_l2_35는 원인은 위의 ssh-key fingerprint가 앤시블 컨트롤 노드에 저장되어 있지 않아서이며, w_l2_8은 없는 장비여서 접속이 당연히 안되므로 실패한 경우다.

w_l2_35 장비 접속 오류를 해결하고 플레이북을 실행해 보면,

$ ansible-playbook book-check.yml -i inventory.yml -l w_l2_35,w_l2_32  --vault-id admin@vault-pw.txt

PLAY [Extreme Switch Check Playbook] ***************************************************************************

TASK [Check Extreme switches...] *******************************************************************************
ok: [w_l2_32]
ok: [w_l2_35]

TASK [output] **************************************************************************************************
ok: [w_l2_32] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Operational at 11000 RPM",
            " Fan-2:                  Operational at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               29.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}
ok: [w_l2_35] => {
    "result.stdout_lines": [
        [
            "FanTray information:",
            " State:                  Operational",
            " NumFan:                 4",
            " Fan-1:                  Failed at 11000 RPM",
            " Fan-2:                  Failed at 11000 RPM",
            " Fan-3:                  Operational at 11000 RPM",
            " Fan-4:                  Operational at 11000 RPM"
        ],
        [
            "Field Replaceable Units               Temp (C)   Status   Min  Normal   Max",
            "---------------------------------------------------------------------------",
            "Switch         : X440-24p               32.50    Normal   -10    0-48  55"
        ],
        [
            "PowerSupply 1 information:",
            " State             : Powered On",
            " PartInfo          : Internal Power Supply  ",
            "",
            "PowerSupply 2 information:",
            " State             : Empty",
            " Poll Interval     : 60 s",
            " Change Threshold  : N/A",
            " Change Action     : N/A"
        ]
    ]
}

PLAY RECAP *****************************************************************************************************
w_l2_32                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
w_l2_35                    : ok=2    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

w_l2_35 장비에서 Fan-1, Fan-2 두개의 팬이 고장난 것이 보인다.

참고문서: https://galaxy.ansible.com/extreme/exos?extIdCarryOver=true&sc_cid=701f2000001OH6uAAG

3 comments

    • Daniel on 2023년 4월 25일 at 8:07 오후
    • Reply

    오래 전 포스트라 이미 알고 계실 것 같기는 한데 ansible.cfg에서 다음과 같이 설정해주면 대상 장비의 SSH public key가 저장되어 있지 않더라도 에러가 발생하지 않습니다.

    host_key_checking=False

      • snowffox on 2023년 4월 26일 at 9:08 오전
      • Reply

      좋은 정보 감사드립니다.

      ansible 보다는 nornir로 기능을 만들어 사용하다보니, 몰랐던 내용입니다!

        • Daniel on 2023년 4월 26일 at 4:39 오후
        • Reply

        저도 요즘 nornir + netbox로 장비 정보 수집하는 걸 고민 중인데 snowffox님 블로그가 큰 도움이 되네요. 늘 좋은 내용 올려주셔서 감사합니다.

답글 남기기

Your email address will not be published.