使用Ansible的cisco.ios.ios_config模块获取运行配置报错求助
问题解答
关于defaults: yes时命令不识别的问题
你追踪到的ios.py第455行的逻辑,是Ansible针对IOS设备配置获取的模板化处理——这里的?是占位符,用于根据设备实际支持的命令自动替换,但不是所有IOS设备都兼容show running-config all:
- 部分IOS版本(比如早期IOS XE、低端交换机机型)只支持
show running-config的特定参数,all可能被替换为full,甚至完全不支持该参数 - 模块设计优先保证通用兼容性,而非强制使用
all参数
解决办法:
- 手动通过
defaults_command选项覆盖默认命令,指定设备支持的全量配置查询命令:- name: 获取包含默认配置的运行配置 cisco.ios.ios_config: defaults: yes defaults_command: 'show running-config all' - 先在设备上执行
show running-config ?,确认你的设备支持的全量配置参数,再替换到defaults_command中
关于show running-config all的权限问题
show running-config all不需要root权限,而是需要设备的特权EXEC模式权限(即enable权限)。你无法用shell模块执行该命令,是因为shell模块默认在用户EXEC模式下运行,未进入特权模式。
解决办法:
- 若要执行该命令,优先使用
ios_command模块,它会自动处理特权模式切换:- name: 获取全量运行配置 cisco.ios.ios_command: commands: 'show running-config all' vars: ansible_become: yes ansible_become_method: enable - 避免用shell模块操作IOS设备配置类命令,专用模块(ios_config/ios_command)更适配IOS的权限和命令体系
内容的提问来源于stack exchange,提问作者NRJ
相关产品推荐
相关产品推荐

