0

我正在尝试使用 Ansible 的“cli_command”模块来配置 Netscaler 设备。对于其中 2 个,运行版本“12.0 - build 60.9.nc”,这样的简单任务可以完美运行:

- name: call NS CLI
  cli_command:
    command: show nsconf
  register: cs_vserver
  delegate_to: netscaler_dmz

将“delegate_to”更改为运行版本“NS11.1:Build 56.19.nc”的设备,我收到错误消息:

完整的回溯是: 警告:以下回溯可能与实际故障无关文件“/tmp/ansible_cli_command_payload_4w503v/ansible_cli_command_payload.zip/ansible/modules/network/cli/cli_command.py”,第 167 行,在主文件“/tmp/ansible_cli_command_payload_4w503v/ansible_cli_command_payload.zip/ansible/module_utils/connection.py”,行185,在RPC中 引发 ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code) 致命:[localhost -> 172.26.58.112]:失败!=> {“更改”:假,“调用”:{“module_args”:{“答案”:空,“check_all”:假,“命令”:“显示nsconf”,“换行”:真,“提示”: null, "sendonly": false } }, "msg": "命令超时触发,超时值为 30 秒。\n请参阅网络调试和故障排除指南中的超时设置选项。" }

身份验证对所有 3 台设备使用 RSA 密钥,日志显示欢迎横幅并且连接正常(使用 ssh 的手动连接也可以正常工作),但在发生上述错误后不久。奇怪的是,Netscaler 未列在可用网络平台列表中(https://docs.ansible.com/ansible/latest/network/user_guide/platform_index.html#settings-by-platform),但使用以下参数可以正常工作另外两个 Netscaler(库存文件):

all:
  hosts:
    localhost:
      ansible_connection: local
    netscaler_dmz_int: <= OK
      ansible_host: 192.168.XXX.XXX
      ansible_connection: network_cli
      ansible_network_os: ios
      ansible_user: nsroot
    netscaler_dmz_prod: <= OK
      ansible_host: 192.168.XXX.XXX
      ansible_connection: network_cli
      ansible_network_os: ios
      ansible_user: nsroot
    netscaler_dc: <= KO
      ansible_host: 172.26.XXX.XXX
      ansible_connection: network_cli
      ansible_network_os: ios
      ansible_user: nsroot

短期内升级固件是不可行的。问题是否来自旧版本?是否有更充分的参数使其适用于所有 3 台设备?谢谢。

4

1 回答 1

1

多亏了 2 位同事,问题得以解决:Citrix 设备的提示在连接后仅显示“>”而不是更复杂的提示,例如“user_device_name>”,这导致 paramiko 模块无限期地等待并以超时结束。

前 :

简单 > 提示

cli_command 结果:

2021-08-06 10:37:07,728 p=4783 u=xxxxx n=p=4783 u=xxxxx | paramiko [xxx.xx.xx.xxx] | Authentication (publickey) successful!
2021-08-06 10:37:34,487 p=4646 u=xxxxx n=ansible | persistent connection idle timeout triggered, timeout value is 30 secs.

可以为用于连接的特定用户更改此提示,此处为“nsroot”:

在此处输入图像描述

后 :

在此处输入图像描述

之后连接成功。

于 2021-08-06T14:44:22.123 回答