Skip to main content

CiberC Code Automation - reports excel and json formats and save data in MongoDB

Project description

ciberc-ca

CiberC Code Automation

Generation of interface reports for IOS devices in parallel, cross validations for migration of VRFs from IOS devices to XR with option for save data from devices in database MongoDB.

https://www.ciberc.com

Technology stack

Python >= 3.8 or > 4.0

Status

latest version validated and tested

Use Case Description

One of our clients generated the VRF migration report in an exhausting time, in terms of the client, one week to validate each piece of equipment, ciberc-ca generates a comparative cross-validation report saving a lot of time and avoiding human errors, at the same time it allows saving and viewing records of alive and interfaces command when establishing a connection with a MongoDB database.

Installation

Ubuntu 20.04 or o any Distribution of Linux with support to Python3

Steps to install in Ubuntu workstation (automation station)

prepare environment:
  sudo apt-get install python3
  sudo apt-get install git
  sudo apt-get install python3-pip
  python3 -m pip install virtualenv

  python3 -m venv env
  source env/bin/activate
  python3 -m pip install cibercca
  mkdir code
  cd code

Configuration

The first step is to create the inventory files, in these will go the record of the devices assigned to evaluate

Inventory files command:

Description: create the necessary files to create the cyberc-ca system inventory

Options:
  --create / --no-create  create files from inventory examples  [default: no-create]

Example:
    $ ciberc-ca inventory --create

Alive command:

Description: Ping report of all inventory devices. When --output=database must be establish database connection 

Options:
  --path TEXT
  --group TEXT
  --workers INTEGER
  --output TEXT      The type to print report (json, table or database)  [default: json]

Example:
    $ ciberc-ca alive --path=inventory/ --group=guatemala --workers=4 --output=json > alive-report.json
    $ ciberc-ca alive --path=inventory/ --group=guatemala --workers=4 --output=database

Interfaces command:

Description: report interfaces of cisco ios devices currently, generates report in json as a summary in excel. When --output=database must be establish database connection
    - BVI
    - Vlans
    - trunk interfaces
    - bridge-domain
    - mac-address-table dynamic

Options:
  --path PATH        The path to inventory  [required]
  --group TEXT       The groups to filter inventory [required]
  --workers INTEGER  The parallel execution  [default: 2]
  --output TEXT      The type to print report (json, excel and database) [default: json]
  --mechanism TEXT   The excel mechanism to print report
  --name TEXT        The name of excel report

Example:
    $ ciberc-ca interfaces --path=core/inventory/ --group=guatemala --output=json > interfaces.json
    $ ciberc-ca interfaces --path=core/inventory/ --output=excel --mechanism=row --name=interfaces > interfaces.json
    $ ciberc-ca interfaces --path=core/inventory/ --group=guatemala --output=database

Ping command:

Description: report por vrf and ping results for inventory devices

Options:
  --path PATH        The path to inventory  [required]
  --group TEXT       The groups to filter inventory  [required]
  --workers INTEGER  The parallel execution  [default: 2]
  --output TEXT      The type to print report  [default: json]
  --name TEXT        The name of the excel file
  --process TEXT     what type of process for the vrf report [src, dst] [required]
  --help             Show this message and exit.

Example:
    $ ciberc-ca ping --path=core/inventory/ --group=src,guatemala,escuintla --output=json --name=ReportPingSource --process=src
    $ ciberc-ca ping --path=core/inventory/ --group=dst,guatemala,escuintla --output=json --name=ReportPingDestinations --process=dst

Ping-Merge command:

Description: Command to merge the source vrf listing files and destination with validated report

Options:
  --file-src TEXT  Vrf origin listing file  [required]
  --file-dst TEXT  Target vrf listing file  [required]
  --output TEXT    The type to print report  [required]
  --name TEXT      The name of the excel file
  --help           Show this message and exit.

Example:
    $ ciberc-ca ping-merge --file-src=file_vrfs_source.json --file-dst=file_vrf_destinations.json --output=excel --name=ReporteMigrations

records command:

Description: Return record list for type of command, just if exist data and connection with MongoDB (alive or interfaces)

Options:
  --command TEXT  Type of command (alive or interfaces)  [required]



Example:
    $ ciberc-ca records ---command=alive
    $ ciberc-ca records ---command=interfaces

Structure

inventory/
├── dbconnect.yaml
├── defaults.yaml
├── groups.yaml
└── hosts.yaml


Inventory is based on nornir structure

  dbconnect.yaml: Contains url connection for MongoDB.

  defaults.yaml: Contains all the default variables for the devices.

  groups.yaml: Although based on nornir groups, two mandatory groups are needed for configuration, src, dst for the cross-validation ping-merge command.

  hosts.yaml: where all IOS devices are registered for interface reporting, source IOS and destination XR for VRF's migration

Usage

Para implementar el servicio una vez que haya definido los equipos en el archivo de hosts (aquí se define el usuario y la contraseña que se aplicará por tipo de dispositivo), los nombres de los dispositivos de red correctamente (en el archivo etc/hosts) y los dispositivos tienen la configuración de SSH, entonces colocaría los comandos de ejemplo para activar el agente ssh y xml en XR.

configuration example in XR device

# default.yaml
---
data:
  domain: local.local


# groups.yaml
---
# {} => ejemplo
guatemala: {}

# for the ping report, it contains all the source computers
src: {}

# for the ping report, it contains all the destination computers
dst: {}


# hosts.yaml
---
R1:
  hostname: localhost
  port: 22
  username: user
  password: secret
  platform: ios
  groups:
    - guatemala
    - src # used to separate the source computers from the migration

R2:
  hostname: localhost
  port: 22
  username: user
  password: secret
  platform: iosxr
  data:
    source: R1 # to which device does the migration belong, virtual link to compare reports
  groups:
    - guatemala
    - dst # used to separate the migration destination computers


How to test the software

you can check the configuration in the devices in the generated report

Getting help

If you have questions, concerns, bug reports, etc., please create an issue against this repository, or send me an email to: Dev.auto@ciberc.com

Link Video Example

https://youtu.be/Ca5pvCZadhg

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cibercca-0.2.6.tar.gz (26.1 kB view details)

Uploaded Source

Built Distribution

cibercca-0.2.6-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

Details for the file cibercca-0.2.6.tar.gz.

File metadata

  • Download URL: cibercca-0.2.6.tar.gz
  • Upload date:
  • Size: 26.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.19 Linux/6.8.0-36-generic

File hashes

Hashes for cibercca-0.2.6.tar.gz
Algorithm Hash digest
SHA256 3e23d92b7dfbefcf61219046f97f3a5111a71dadf8c6a56c702645722c87d51b
MD5 b465943c78f114844bf4cec226baaa1d
BLAKE2b-256 ad5f0f298b8353a0b491f5ed2d6ddd2c8eb1dc091d63465951e121bf5658442e

See more details on using hashes here.

File details

Details for the file cibercca-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: cibercca-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 34.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.9.19 Linux/6.8.0-36-generic

File hashes

Hashes for cibercca-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 1db3c8ad2b63f01c1ce1290dfee81f71523d6caf717f9c80dba7bc89c798e410
MD5 0bd936ee13bf3c8d9f8af0bd65e8e00b
BLAKE2b-256 6716764e8e0d999650c6c2ad93019f441ee8d3654965ac5d5bb54570c0f54794

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page