Ansible 负责解决Cisco ASA访问问题

Ansible 负责解决Cisco ASA访问问题,ansible,Ansible,我正在尝试将ASA模块用于Ansible,但连接到设备时遇到困难 对于ASA设备的“管理员”用户,“正常”手动ssh工作正常 我经常遇到这样的错误无法通过ssh连接到主机:权限被拒绝 查看-vvv输出,我可以看到ansible在执行任务时正在传递PasswordAuthentication=no SSH:EXEC SSH-C-o ControlMaster=auto-o ControlPersist=60s-o KbdInteractiveAuthentication=no-o Preferre

我正在尝试将ASA模块用于Ansible,但连接到设备时遇到困难

对于ASA设备的“管理员”用户,“正常”手动ssh工作正常

我经常遇到这样的错误
无法通过ssh连接到主机:权限被拒绝

查看
-vvv
输出,我可以看到ansible在执行任务时正在传递
PasswordAuthentication=no

SSH:EXEC SSH-C-o ControlMaster=auto-o ControlPersist=60s-o KbdInteractiveAuthentication=no-o PreferredAuthentications=gssapi with mic、gssapi-keyex、基于主机、公钥-o PasswordAuthentication=no-o User=admin-o ConnectTimeout=10-o ControlPath=/root/.ansible/cp/896d0497f8 192.168.1.64'/bin/sh-C''echo~&sleep 0''''

但是,我无法在模块中找到可以更改的位置。有什么建议吗

这是我的剧本:

---
- hosts: 192.168.1.64
  any_errors_fatal: True
  gather_facts: no
  remote_user: admin

  vars:
    cli:
      host: asav_lab
      username: admin
      password: "{{asa_admin_password}}"
      transport: cli
      authorize: yes
      auth_pass: "{{asa_admin_password}}"

  tasks:
    - asa_command:
        commands:
          - show version
        provider: "{{ cli }}"
详细输出:

TASK [asa_command] *****************************************************************************************************************************************************************************************
task path: /var/lib/awx/projects/platforms-ansible/asa_test_play.yaml:41
Using module file /usr/lib/python2.7/dist-packages/ansible/modules/network/asa/asa_command.py
<192.168.1.64> ESTABLISH SSH CONNECTION FOR USER: admin
<192.168.1.64> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o User=admin -o ConnectTimeout=10 -o ControlPath=/root/.ansible/cp/896d0497f8 192.168.1.64 '/bin/sh -c '"'"'echo ~ && sleep 0'"'"''
<192.168.1.64> (255, '', 'ssh: connect to host 192.168.1.64 port 22: Connection refused\r\n')
fatal: [192.168.1.64]: UNREACHABLE! => {
    "changed": false, 
    "msg": "Failed to connect to the host via ssh: ssh: connect to host 192.168.1.64 port 22: Connection refused\r\n", 
    "unreachable": true
}
任务[asa_命令]*****************************************************************************************************************************************************************************************
任务路径:/var/lib/awx/projects/platforms ansible/asa_test_play.yaml:41
使用模块文件/usr/lib/python2.7/dist-packages/ansible/modules/network/asa/asa_command.py
为用户建立SSH连接:admin
SSH:EXEC SSH-C-o ControlMaster=auto-o ControlPersist=60s-o KbdInteractiveAuthentication=no-o PreferredAuthentications=gssapi with mic,gssapi-keyex,hostbased,publickey-o PasswordAuthentication=no-o User=admin-o ConnectTimeout=10-o ControlPath=/root/.ansible/cp/896d0497f8 192.168.1.64'/bin/sh-C''echo~&sleep 0''
(255,,“ssh:连接到主机192.168.1.64端口22:连接被拒绝\r\n”)
致命:[192.168.1.64]:无法访问!=>{
“更改”:错误,
“msg”:“无法通过ssh连接到主机:ssh:连接到主机192.168.1.64端口22:连接被拒绝\r\n”,
“遥不可及”:真实
}
您应该在本地主机上运行模块(播放),而不是在Cisco设备上运行


当然,使用
connection:local

本地连接无法解决此问题。确实没有好的文章或视频显示如何解决这个特定问题。Ansible在默认情况下需要SSH密钥,因此保持默认连接类型需要将公钥复制到您尝试连接的任何用户以及远程设备。登录Cisco设备,启用公钥身份验证,然后将公钥复制到该设备。如果这不能解决您的问题,我强烈建议使用Paramiko切换到Python脚本。这是一个非常完善的库,允许您远程发送命令,还可以备份配置:


ssh:connect to host 192.168.1.64端口22:连接被拒绝
表示:ssh服务器未在侦听!在这种情况下,更换另一个工具包似乎完全是矫枉过正:-)我理解你为什么会这样想,但OP在他的帖子中说:“普通”手动ssh对于ASA设备的“管理员”用户来说很好。“因此,设备正在侦听,而引发的异常是错误的。当Ansible显然不是一个好的软件用例时,继续使用Ansible进行故障排除更麻烦。此外,创建一个Python脚本来使用Paramiko进行网络设备管理需要8行代码。我几乎不相信这是过分的。我同意你的观点(尽管大多数情况下在实际情况下,我们不能改变用户现有的系统来修复它们)。