You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ansible连接Cisco永久沙盒时SSH连接失败求助

Ansible连接Cisco永久沙盒失败:无法解析hostname inventory_hostname

错误提示显示Ansible尝试将inventory_hostname当作字面主机名解析,而非替换为实际的IP/FQDN,这说明Ansible在获取目标主机地址时出现了配置异常。以下是具体排查和解决步骤:

  • 检查Ansible配置文件
    查看当前工作目录、~/.ansible.cfg或/etc/ansible/ansible.cfg,确认是否存在remote_addr参数的错误设置。如果配置了remote_addr = inventory_hostname,会导致Ansible直接使用该字符串作为主机地址,无法解析。解决方法:注释或删除该参数。

  • 显式指定inventory中的ansible_host
    在hosts文件中为每个主机显式设置ansible_host变量,确保Ansible能正确获取目标地址,同时移除变量值的多余单引号(ini格式无需额外引号):

    [iosxe]
    131.226.217.143 ansible_host=131.226.217.143
    
    [iosxr]
    sandbox-iosxr-1.cisco.com ansible_host=sandbox-iosxr-1.cisco.com
    
    [iosxe:vars]
    ansible_network_os=ios
    ansible_user=admin
    ansible_ssh_pass=C1sco12345
    
    [iosxr:vars]
    ansible_network_os=iosxr
    ansible_user=admin
    ansible_ssh_pass=C1sco12345
    
  • 安装SSH密码登录依赖
    确保系统安装了sshpass(Ansible用密码登录SSH的必要依赖):

    sudo apt update && sudo apt install sshpass
    
  • 升级Ansible版本
    旧版本Ansible的network_cli插件可能存在兼容性问题,建议升级到2.10及以上版本:

    sudo apt update && sudo apt upgrade ansible
    

    或用pip升级:

    pip install --upgrade ansible
    
  • 测试单主机连接
    用单主机测试缩小问题范围,比如测试IOS-XE设备:

    ansible -i hosts iosxe -m ios_command -a "commands='show ip route'" -u admin -k
    

    输入密码后观察是否能成功执行命令,若成功则说明playbook可能存在其他格式问题。

  • 修复playbook的local_action格式
    playbook中local_action的content部分使用逗号会生成列表格式,建议改为字符串拼接,确保输出符合预期:

    - local_action:
        module: copy
        content: "{{ inventory_hostname ~ ': ' ~ ('Failed with message: ' ~ ios_output.msg if ios_output.failed else 'Success: ' ~ ios_output.stdout_lines) }}"
        dest: "./{{ inventory_hostname }}.txt"
    

内容的提问来源于stack exchange,提问作者chun xu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:55:55