How can I automate the deployment of cisco IOS upgrades?

I was googling this and didn't turn up anything.

If you have 100 some odd Cisco routers and switches how do you push out new IOS releases? Certain not by manually logging into every device. The only thing I found was the Cisco Auto-Upgrade Manager, but that's only for ISRs.

Is the only way to deploy Cisco switch and router updates through scripts? I could script this, but before doing this I wanted to be sure that the only way to do this is with my own scripts.

edit: Just to be clear I'm not looking for a way to make the routers automatically update themselves just an automated way to push out IOS updates to the routers.

Edit: Just as an update Puppet Device Managemnet (with Foreman) works pretty well, but I may just go with SolarWinds NCM


{Disclaimer - I work for an HP partner}


What I see most often is the use of a tool like HP Network Automation (which does far more than merely push IOS updates to Cisco devices - it supports all kinds of network devices, does configuration management, can be used for audit compliance, etc).

You might also consider some of the Open Source products like Chef, Puppet, Ansible, CFengine, and others.

It may also be possible to use something like PSSH - but I don't know.


I recently wrote an Ansible module that allows you to use SSH+SCP to transfer a file to Cisco IOS devices.

One of the use cases is obviously transferring IOS images. It has some built-in checks like not transferring the file if it already exists and performing an MD5 comparison (original file to transferred file). The MD5 is CPU intensive on the router, however.

With the module + Ansible you could then pretty easily transfer new IOS images to a set of network devices.

The module can be found here: https://github.com/ktbyers/scp_sidecar.

I also have a write-up about using the module which can be found here: https://pynet.twb-tech.com/blog/automation/cisco-ios.html