Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oliverl-21/ansible-role-cisco-ios-update
Ansible Role to update Cisco IOS-XE devices with Ansible
https://github.com/oliverl-21/ansible-role-cisco-ios-update
ansible ansible-role cisco ios updater wip
Last synced: 3 months ago
JSON representation
Ansible Role to update Cisco IOS-XE devices with Ansible
- Host: GitHub
- URL: https://github.com/oliverl-21/ansible-role-cisco-ios-update
- Owner: oliverl-21
- Created: 2022-02-18T14:48:14.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2024-11-09T09:43:28.000Z (3 months ago)
- Last Synced: 2024-11-09T10:27:06.445Z (3 months ago)
- Topics: ansible, ansible-role, cisco, ios, updater, wip
- Homepage:
- Size: 1.03 MB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[![Release](https://github.com/oliverl-21/ansible-role-cisco-ios-update/actions/workflows/release.yml/badge.svg)](https://github.com/oliverl-21/ansible-role-cisco-ios-update/actions/workflows/release.yml)
# Cisco IOS Update role - Work in Progress
use at your own risk!
Ansible role to update Cisco IOS-XE Devices
tested Devices:
- Catalyst 8000v
- Catalyst 9800-CL, WiP## Current Tasks
- get current Version and compare to target Version
- clean uncommited and unused firmware if the device is an IOS-XE Device, else skip
- assert that the Device is an IOS-XE and runs at least 16.10.01
- if true all following tasks will run only if current version and target version are different
- copy image from server to device
- unpack image in install mode on device
- save and reboot
- wait for device to be online again
- verify version, commit update and cleanup## ToDo
- test further Devices
- error handling
- conditional tasks, pyats currently not supported for Apple m1
- implement old xe mechanism prior to v16.10.01## Requirements
Firmware Image on a for the device accesible server (e.g. TFTP, HTTP, FTP)
## Role Variables
- ansible_network_cli_ssh_type: ```paramiko```
- updserver: ```Server:Port```
- updmethod: ```http, ftp, tftp```
- updpath: ```/path/to/image```
- ansible_command_timeout: ```900```To Send a Webex a notification based on the state of the task the following can be configured. If the ```webex_Recipient_id``` is empty the tasks are skipped.
- webex_token: ```webex api token```
- webex_recipient_type: ```toPersonEmail```
- webex_recipient_id: ```Email of Recipient```further options: [Webex Module Documentation](https://docs.ansible.com/ansible/latest/collections/community/general/cisco_webex_module.html)
### Update File Variables
- updver: ```version number``` define your version here like 17.06.02
> **Note:**
> Filename is build from updver and Ansible Facts net_model.
> Be aware of lowercase and uppercase letters. In most tested Scenarios the facts are upper but some files are lowercase.```yml
# defaults/main.yml
---
updfile: '{{ ansible_facts.net_model }}-universalk9.{{ updver }}.SPA.bin'
```## Dependencies
Roles: none
Collection:- cisco.ios
- ansible.netcommon
- community.general.cisco_webex## Example Playbook
ToDo
```yaml
# playbook.yml
---- hosts: 8kv*
roles:
- cisco-ios-update
vars:
ansible_network_cli_ssh_type: paramiko
updver: 17.07.01a
updserver: 198.18.168.3:8000
updmethod: http
updpath: /
ansible_command_timeout: 900
webex_token: # your Webex API token
webex_recipient_id: # leave empty if webex shouldn't be used
```to provide an update repository for the devices you can start a simple web server with ```pyhton3 -m http.server```. There is also the option for ```net_put``` from ansible-netcommon but scp is slow due to default copp policies on the Cisco devices. In my tests transfering a 1GB file took 9min via SCP versus 2min over HTTP on a 1Gbit/s connection.
## Sample Output
![C9800-CL Sample](c9800-cl-sample.png)
## License
GPL-3.0-or-later
## Author Information
oliverl-21