Dashboard to manage zero touch provisioning configurations and automated upgrades for Cisco IOS XR and Nexus devices
The on-boarding of devices into the network can be challenging. It can require manual configuration, and that increases the risk of human error. Upgrading to newer software images can also be quite complex, and testing that everything works as expected is rarely automated.
Tools like Zero Touch Provisioning (ZTP) for XR and Power On Auto-Provisioning (POAP) for Nexus makes this process easier. By automating the on-boarding of devices with these tools, we are able to do the initial software installation and the day-0 configuration without human intervention.
However, configuring ZTP and POAP in your environment requires knowledge around DHCP, HTTP and other tools. Also, if you want to do upgrades for devices already present in the network, you still need to manually save the configuration of the device and do the reboot with the correct options.
Finally, ZTP and POAP do not include automated tests.
In order to enable customers to take full advantage of ZTP and POAP, we propose the following application where the these tasks are automated:
- Setup DHCP server configuration, including options and client identifiers
- Setup HTTP configuration, where XR and Nexus images will be stored along with day-0 scripts
- Detection of the different phases for the ZTP and POAP processes
- Tests (ping or telemetry)
- Notifications
The solution will help operators to configure HTTP, DHCP or TFTP from a single portal, without the need of extensive knowledge around how these technologies work. Since everything is managed from a single point, alerts with extensive descriptions can be sent to monitoring tools when troubleshooting needs to be done.
The solution will leverage the following Cisco technologies
- Cisco IOS XR
- Cisco Nexus
- Crosswork Situation Manager
- Webex Teams
- Don Green dongree@cisco.com - Americas Services Providers
- Jason Mah jamah@cisco.com - Americas Global Virtual Engineering
- Santiago Flores Kanter sfloresk@cisco.com - Americas Service Providers
- Golang
- isc-dhcp-server
- Mongo DB
At this moment, this tool supports Nexus and XR devices only. Demo at https://youtu.be/No7S-gKHrDU
The bash script setup.sh under the installation directory can be run to setup the application.
The app assumes that there is a Mongo DB reachable, which is configured via env variables.
Also, you'll need to modify the env file inside the installation directory with the following variables:
# Go related variables, shouldn't need to be changed
export GOPATH=/opt/ztp-go
export GOBIN=$GOPATH/bin
export GOROOT=/usr/local/go
export PATH=$PATH:$GOPATH/bin
# DHCP v4 information
export DHCP_NAMESERVERS=
export DHCP_SUBNET=
export DHCP_SUBNET_NETMASK=
export DHCP_CONFIG_PATH=/etc/dhcp/dhcpd.conf
export DHCP_SERVICE_RESTART_CMD="systemctl restart isc-dhcp-server"
# DHCP v6 information
export DHCP6_NAMESERVERS=
export DHCP6_SUBNET=
export DHCP6_SUBNET_NETMASK=
export DHCP6_CONFIG_PATH=/etc/dhcp/dhcpd6.conf
export DHCP6_SERVICE_RESTART_CMD="systemctl restart isc-dhcp-server6"
# Mongo URI to be used by the tool. 127.0.0.1 assumes mongodb is localhost
export DB_URI=127.0.0.1
# Port to be listening for incoming web requests
export APP_WEB_PORT=8080
# Token to be used when sending notifications
export WEBEX_BOT_TOKEN=
# Enable for extra log information
export DEBUG=on
Documentation around Nexus Power On Auto-Provisioning can be found at https://developer.cisco.com/docs/nx-os/#!poap
Documentation for XR Zero Touch Provisioning can be found at https://xrdocs.io/device-lifecycle/tutorials/2016-08-26-working-with-ztp/#how-ztp-works
Provided under Cisco Sample Code License, for details see LICENSE
Our code of conduct is available here
See our contributing guidelines here