使用Ansible管理Cisco ACI时出现403 Forbidden错误求助
问题:Ansible管理Cisco ACI时连接失败报错403 Forbidden
我在Ubuntu系统上安装Ansible,尝试通过Playbook管理Cisco ACI环境,创建租户时出现连接失败的403错误。
Playbook代码
--- - name: ANSIBLE-Script hosts: apic connection: local gather_facts: FALSE vars: apic_info: &apic_info host: "{{ ansible_host }}" username: admin password: C1sc0123! validate_certs: FALSE tasks: - name: create tenant cisco.aci.aci_tenant: <<: *apic_info tenant: ansible state: present delegate_to: localhost
执行命令
Ubuntu:~/ACI$ ansible-playbook -i inventory.ini playbook.yml
报错信息
PLAY [ANSIBLE-Script] ********************************************************************************** TASK [create tenant] *********************************************************************************** fatal: [192.168.1.1 -> localhost]: FAILED! => {"changed": false, "msg": "Connection failed for https://localhost/api/aaaLogin.json. Request failed: <urlopen error Tunnel connection failed: 403 Forbidden>"} PLAY RECAP ********************************************************************************************* 10.124.147.186 : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
我猜测可能是Ubuntu本地连接问题、Ansible环境问题,或是ACI REST API侧的问题?
排查方向
代理配置问题:报错提及Tunnel connection failed,大概率是Ubuntu本地配置了全局代理,但代理不允许访问APIC地址。可先临时取消代理:
unset http_proxy unset https_proxy也可在Playbook的
apic_info变量中添加proxy: "",或设置no_proxy环境变量包含APIC的IP地址。Inventory配置错误:检查
inventory.ini中apic组对应的ansible_host是否正确指向APIC的真实IP——报错显示请求发到了https://localhost,说明{{ ansible_host }}变量未取到正确值,导致默认使用localhost。APIC网络与权限验证:先测试Ubuntu主机到APIC的连通性,用
curl直接调用REST API验证:curl -k -X POST https://<APIC_IP>/api/aaaLogin.json -d '{"aaaUser":{"attributes":{"name":"admin","pwd":"C1sc0123!"}}}'若无法返回正常登录响应,需排查APIC侧防火墙规则、账号权限是否足够创建租户。
ACI模块版本兼容性:检查
cisco.aci集合版本是否与当前APIC固件版本匹配,过低版本可能存在连接逻辑问题。更新集合:ansible-galaxy collection install cisco.aci --upgrade
内容的提问来源于stack exchange,提问作者yuso.zh
相关产品推荐
相关产品推荐

