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
오래 전 포스트라 이미 알고 계실 것 같기는 한데 ansible.cfg에서 다음과 같이 설정해주면 대상 장비의 SSH public key가 저장되어 있지 않더라도 에러가 발생하지 않습니다.
host_key_checking=False
좋은 정보 감사드립니다.
ansible 보다는 nornir로 기능을 만들어 사용하다보니, 몰랐던 내용입니다!
저도 요즘 nornir + netbox로 장비 정보 수집하는 걸 고민 중인데 snowffox님 블로그가 큰 도움이 되네요. 늘 좋은 내용 올려주셔서 감사합니다.