Im0.cisco_upgrader
im0.cisco_upgrader
这个角色用于在一系列思科网络设备上部署新镜像。
要求
- Ansible 2.7+
- Ansible 网络引擎
- 合适的思科路由器或交换机进行升级
- 您设备的合适 ios/catos 镜像
- 已安装 Python pip
scp
模块
角色变量
Image
: 镜像文件名。ImagePath
: 镜像文件名的路径。 默认值:./
。State
: 可以选择stage
镜像以便未来手动重启(和启动设置),或upgrade
,这将会进行镜像准备并重启设备。UpgradeType
: 升级类型为ios-bin-upgrade
、cat-software-install
或auto
。BackupImage
: 布尔值,表示是否备份交换机上现有的镜像。仅适用于ios-bin-upgrade
。 默认值:False
。
重要注意事项
警告: 此角色会对您的网络设备进行更改,并重启设备。 这将导致停机。
请确保在实验设备上充分测试后再在生产设备上运行。 风险自负。
超时: 您可能需要调整一些 Ansible 配置变量,特别是:
timeout = 60
[persistent_connection]
command_timeout = 1800
persistent_connect_timeout = 1800
否则,某些任务(例如 md5 校验和计算)可能会超时,并显示类似以下的错误:
完整的追踪信息:
警告:下面的追踪信息可能与实际失败无关。
文件 "/tmp/ansible_ios_command_payload_VB1GqY/ansible_ios_command_payload.zip/ansible/module_utils/network/ios/ios.py",第 145 行,在 run_commands 中
return connection.run_commands(commands=commands, check_rc=check_rc)
文件 "/tmp/ansible_ios_command_payload_VB1GqY/ansible_ios_command_payload.zip/ansible/module_utils/connection.py",第 182 行,在 __rpc__ 中
raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)
致命错误: [设备]: 失败! => {
"changed": false,
"invocation": {
"module_args": {
"auth_pass": null,
"authorize": null,
"commands": [
"verify /md5 flash:c2960-lanbasek9-mz.150-2.SE11.bin"
],
... 略 ...
}
},
"msg": "命令超时触发,超时值为 10 秒。\n请查看网络调试和故障排除指南中的超时设置选项。"
}
scp: 镜像当前使用 scp
进行传输。 设备上启用了 scp
(如果尚未启用)。 未来更新可能会启用 tftp
作为传输方法。
堆叠交换机: 对堆叠交换机的升级尚未特别测试或准备。
MD5 校验和: 假定提供的二进制镜像的完整性。 确保您使用的镜像未被破坏是您的责任。
执行时捕获本地 MD5 校验和,然后比较传输后的 md5 校验和以确保数据传输成功。
示例播放簿
为手动重启准备一个镜像:
- hosts: switches
gather_facts: no
roles:
- { role: im0.cisco_upgrader,
Image: 'c2960-lanbasek9-mz.122-55.SE12.bin',
State: stage,
ImagePath: '/tmp',
UpgradeType: 'ios-bin-upgrade',
BackupImage: True
}
升级设备并重启:
- name: 升级设备
include_role:
name: im0.cisco_upgrader
vars:
Image: 'c2960-lanbasek9-mz.122-55.SE12.bin'
State: 'upgrade'
ImagePath: '/tmp'
UpgradeType: 'ios-bin-upgrade'
UpgradeType 详细信息
根据设备的品牌和型号,有多种升级思科网络设备的方法。
当前支持的升级方式:
ios-bin-upgrade
,根据思科网站的升级说明进行操作: https://www.cisco.com/c/en/us/support/docs/routers/3800-series-integrated-services-routers/49044-sw-upgrade-proc-ram.html / https://www.cisco.com/c/en/us/support/docs/switches/catalyst-2950-series-switches/41542-191.htmlcat-software-install
,根据思科网站的升级说明进行操作: https://www.cisco.com/c/en/us/td/docs/switches/lan/catalyst3850/software/release/16-3/release_notes/ol-16-3-3850.html#pgfId-1110759
当前不支持的:
nxos-upgrade
ios-xr-upgrade
特别提及:
auto
,尝试根据测试/已知型号选择适当的升级方法。 当前支持的型号: C881、C2960、C3750
限制
请将以下限制视为待办事项列表。当前的限制包括:
- 不支持
flash:
之外的文件系统路径。 - 仅支持
ios
和catos
的升级。 - 仅支持
scp
复制方法。 - 自动检测升级方法目前未实现。
- 需要更好地控制设备重启后的等待时间。 引入一个新参数进行控制。
许可证
GPLv3
作者信息
- John Imison
- Matthew Eason