Ansible使用with_items配置交换机接口报list无startswith属性错误
错误原因
报错AttributeError: 'list' object has no attribute 'startswith'是因为你当前使用的ios_config模块版本要求parents参数必须传入列表类型,你现在传入的是纯字符串,模块内部处理时误将字符串按列表遍历,调用字符串专属方法时就触发了该错误。另外你的模板变量语法存在小瑕疵,{{ item.int_name}}缺少变量名和结束括号之间的空格,部分场景下会触发解析异常。
修复后Playbook示例
- name: "CONFIGURE INTERFACE IN ACCESS MODE" ios_config: commands: - description {{ item.desc }} - switchport mode access - switchport access vlan {{ item.vlan_id }} parents: ["interface {{ item.int_name }}"] with_items: - {int_name: 'GigabitEthernet 1/0/1', desc: 'Internet vers Routeur OBS', vlan_id: 400 } - {int_name: 'GigabitEthernet 1/0/2', desc: 'Internet OBS vers FW-907411-F', vlan_id: 400 } - {int_name: 'GigabitEthernet 1/0/3', desc: 'Internet BBOX vers FW-907411-F', vlan_id: 401 } - {int_name: 'GigabitEthernet 1/0/9', desc: 'MGMT vers FW-907411-F', vlan_id: 20 } - {int_name: 'GigabitEthernet 1/0/10', desc: 'SONOS', vlan_id: 20 }
额外注意事项
- 若修改后仍有异常,可先检查Ansible版本,2.9及以上版本对ios系列模块的参数兼容性更好,你当前运行环境使用的Python2.7已经停止维护,建议升级到Python3.6+搭配新版Ansible使用
- 接口名称要和设备实际显示完全一致,避免出现
GigabitEthernet 1/0/1(带空格)和GigabitEthernet1/0/1(不带空格)的写法不匹配问题
内容的提问来源于stack exchange,提问作者Cheikh Ahmed Tidiane FALL
相关产品推荐
相关产品推荐

