Giter Site home page Giter Site logo

d180510wm3 / ccie-lab-automation Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ofwolfandman/ccie-lab-automation

0.0 0.0 0.0 101 KB

A script to automate configuration of Cisco Routers and Switches (Used on IOSv and CSR1000V instances) from the ground up, as well as run backups and collect diagnostics

Python 100.00%

ccie-lab-automation's Introduction

CCIE-Lab-Automation

Version 2.4

Use this script to automate a CSR1000V/IOSv deployment, primarily within a CCIE lab environment.

Built in python 2.7. The following are a few features currently available with this script:

  • Baseline and hardening script configuration

  • Scenarios configuration per INE's CCIE topology (Will introduce Micronics' labs into the mix soon)

  • Pull BGP ASNs from all devices

  • Configuration backups to an SCP server (A Raspberry Pi was used for testing)

  • Install trial premium license for extra functionality i.e. Security and Data licenses (MPLS, IPSec)

  • Configure replace function

  • Template rendering with Jinja2 prior to deployment

  • Have an idea? Pitch it! I want to hear it!

Prerequisites & Dependencies:

  • Python (Duh)

  • Required libraries

    • Netmiko

    • TQDM (Used as a progress bar for tasks)

    • NAPALM (Used for the configure replace operations)

  • SCP server for backups (Can modify for FTP)

  • RADIUS or TACACS+ server for authentication (FreeRADIUS was used in testing on a Raspberry Pi)

New in this release:

  • Code cleanup

(Potential) Future Development:

  • TextFSM integration for data parsing

  • Ansible integration for supplementary configuration management purposes

  • Multithreading abilities for additional functions (Used to speed up the process of pulling data and pushing configurations)

  • Consolidation of certain code to provide greater modularity

Additional Details:

Baseline script formatting must have the following requirements for configure replace to take it properly:

  • "Version 15.4" (Or the applicable version)

  • "end" command

  • Subcommands, such as those under "interface Gigx/x", must have a space in them to display hierarchy. Otherwise those lines won't be added.

  • ALL whitespaces should be filled with "!". In addition, it is advised against using a configuration with a banner in it during configure replace operations

Paths should be defined in the script to suit your needs. Things that will need to be defined in the YAML (Data structure for external variables) file include:

  • SCP server IP

  • SCP server path

  • Router/Switch serial IPs and ports, and in-band IPs

  • Path to your scenario/baseline/hardening configurations on the box running the script

  • Variables for the Jinja2 templates

Since release 2.2, Python 2 functionality has been partially broken. Working on patching things up, but moving forward, python3 compatibility is a must.

To-Do:

  • Guidance on script usage must be added. Lots of parameters not mentioned

  • The telnet functions can likely be consolidated, (DRY principle)

ccie-lab-automation's People

Contributors

ofwolfandman 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.