Git Product home page Git Product logo

ztp-dashboard's Introduction

published

ZTP Dashboard

Dashboard to manage zero touch provisioning configurations and automated upgrades for Cisco IOS XR and Nexus devices

Business/Technical Challenge

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.

Proposed Solution

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.

Cisco Products Technologies/ Services

The solution will leverage the following Cisco technologies

  • Cisco IOS XR
  • Cisco Nexus
  • Crosswork Situation Manager
  • Webex Teams

Team Members

Solution Components

  • Golang
  • isc-dhcp-server
  • Mongo DB

Usage

At this moment, this tool supports Nexus and XR devices only. Demo at https://youtu.be/No7S-gKHrDU

Installation

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

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

License

Provided under Cisco Sample Code License, for details see LICENSE

Code of Conduct

Our code of conduct is available here

Contributing

See our contributing guidelines here

ztp-dashboard's People

Contributors

eckelcu avatar jasmah avatar jawhnycooke avatar sfloresk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.