NEW TOOLS. ngage vaping. MATT GRISWOLD

Similar documents
NAPALM Documentation. Release 1. David Barroso

Git & Github Fundamental by Rajesh Kumar.

Configuring the JUNOS Software the First Time on a Router with a Single Routing Engine

Overview of the Cisco NCS Command-Line Interface

Cisco Network Programmability for the Enterprise NPEN v1.0

Configuring TACACS+ About TACACS+

2 Initialize a git repository on your machine, add a README file, commit and push

Monitoring Cisco VTS

Object Oriented Programming. Week 1 Part 2 Git and egit

Getting Started with n-command

SSH Deploy Key Documentation

8.9.2 Lab: Configure an Ethernet NIC to use DHCP in Windows Vista

Bash Tutorial. ASL Fall 2017 Week 2

NetFlow Data Collection

Garment Documentation

Automatic MySQL Schema Management with Skeema. Evan Elias Percona Live, April 2017

ardpower Documentation

This guide assumes that you are setting up a masternode for the first time. You will need:

DevOps examples on NonStop Tools Overview. Cor Geboers, ATC Consultant

Network Automation at Oracle+Dyn NANOG on the Road Boston, 14 Sept 2017

CSE 15L Winter Midterm :) Review

Change Management: DYNAMIC NETWORK MAPPING. LinuxWorld San Francisco Security Track. Presented by Joshua D. Abraham.

Singularity: container formats

Version control system (VCS)

Tunir Documentation. Release Kushal Das

calyptos Documentation

UCI Command Line Interface Reference

TangeloHub Documentation

CENG 334 Computer Networks. Laboratory I Linux Tutorial

Dell EMC Networking Saltstack Integration Documentation

Solving TWS Windows Job Run Issues

This tutorial provides a basic understanding of the infrastructure and fundamental concepts of managing an infrastructure using Chef.

GIT. A free and open source distributed version control system. User Guide. January, Department of Computer Science and Engineering

Setting up a Chaincoin Masternode

Junos Ansible Modules Documentation

CS 261 Recitation 1 Compiling C on UNIX

Software Revision Control for MASS. Git Installation / Configuration / Use

upaas Documentation Release 0.2 Łukasz Mierzwa

RSA NetWitness Platform

Contrail Sandbox Tutorial Script

School of Computing Science Gitlab Platform - User Notes

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Gerrit

Using the YANG Development Kit (YDK) with Cisco IOS XE

I hate money. Release 1.0

Configuring System Message Logging

Event Driven network automation

CTL. Introduction. April 21, distributed control dispatching framework

OpenNTI Collect and visualize KPI from Networks devices

Configuration Replace and Configuration Rollback

BitcoinMonster Masternode Linux VPS Tutorial - Vultr VPS Created By : Samshak Donet Mon: MKX8PFz1uvBkwNDTXtUuj6KinudhsKZh1K

turbo-hipster Documentation

PatternFinder is a tool that finds non-overlapping or overlapping patterns in any input sequence.

Contextual Configuration Diff Utility

COMP 4/6262: Programming UNIX

bash Tests and Looping Administrative Shell Scripting COMP2101 Fall 2017

COMPUTER SCIENCE LARGE PRACTICAL.

DAVE LIDDAMENT INTRODUCTION TO BASH

More Raspian. An editor Configuration files Shell scripts Shell variables System admin

Making GENI Experiments Repeatable and Replicable

Human-Computer Interaction Design

yardstick Documentation

#25. Use Source Control in a Single- Developer Environment

Master Node Setup Guide

Junos Platform Automation (JAUT)

Configure router. 26. Start AirPort Utility (located in the Utilities folder). The AirPort Utility window show a component diagram:

Getting Started with MySQL

Git. Charles J. Geyer School of Statistics University of Minnesota. Stat 8054 Lecture Notes

Intro Technical details Using vcsh Outlook Outro. vcsh. manage config files in $HOME via fake bare git repositories

WhatsConfigured v3.1 User Guide

Real-Time Monitoring Configuration Utility

Open Network Laboratory

bash Tests and Looping Administrative Shell Scripting COMP2101 Fall 2017

Lab 7 Configuring Basic Router Settings with IOS CLI

Venafi DevOps Integrations

Shell Programming (bash)

1. Git. Robert Snapp

Release Ralph Offinger

Please review the Infoblox CCS Scripting Guide for more information on the above optional statements

Human-Computer Interaction Design

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Configuration Replace and Configuration Rollback

ntc-docs Documentation

Performing Software Maintenance Upgrades

PyUpdater wxpython Demo Documentation

bash Scripting Introduction COMP2101 Winter 2019

Table of Contents HOL-SDC-1422

Configuring User Accounts and RBAC

Php Scripts If Then Else Linux Bash Shell

Exclusive Configuration Change Access and Access Session Locking

KERNEL C.I. USING LINARO S AUTOMATED VALIDATION ARCHITECTURE. Wednesday, September 11, 13

Some Ubuntu Practice...

Network Automation: Ansible 101

A Practical Introduction to Version Control Systems

Configuring WordPress for Multiple Environments

Installing and Using Docker Toolbox for Mac OSX and Windows

Cisco Prime Network Analysis Module (Cisco Prime NAM) for Nexus 1110 Installation and Configuration Guide

Network Automation. Past, present and future. NANOG 71, San Jose, CA October 2017

Kivy Designer Documentation

Troubleshooting End User Wireless Networks

Vaango Installation Guide

Transcription:

NEW TOOLS ngage vaping MATT GRISWOLD grizz@20c.com

WHAT IS NGAGE? Command line tool to interface with network devices, evolved from internal tools. https://github.com/20c/ngage http://ngage.readthedocs.io/en/latest/

USAGE Usage: ngage [OPTIONS] COMMAND [ARGS]... Options: --help Show this message and exit. Commands: commit commit changes on a device config view and interact with the config diff get diff from device pull pull config from a device push push config to a device rollback rollback device config

WHY NGAGE? Separates device interfacing from config building (unix principle) Allows using the same code in multiple places

USAGE EXAMPLE ChIX (Chicago Internet Exchange) uses ngage to push config built 3 separate ways, all are logged in the same way. Engineer deploys new switch ansible builds fabric config Customer updates mac address django updates database, script builds new port config Customer sets BGP community 33713:666 bird updates database, script builds config

COMMON OPTIONS Options: --quiet --verbose --home TEXT --debug no output at all enable more verbose output specify the home directory, by default will check in order: $NGAGE_HOME,./.ngage, ~/.config/ngage enable extra debug output Home checks current working directory first, to allow for easily having separate config per project

CONNECTION OPTIONS Options: --user TEXT --password TEXT --type TEXT --port TEXT username password to use if not using key auth type of connection, default eznc port to connect to, default per platform If auth fails, ngage will prompt for a password. For an initial deploy of usernames and ssh keys, you could do: ngage push 00-system.conf --user=root $HOSTNAME

NGAGE PUSH Pushes a config to a device Usage: ngage push [OPTIONS] HOST [FILES]... push config to a device Options: --check / --no-check commit check config --commit / --no-commit commit changes --diff / --no-diff show diff of changes --lock / --no-lock lock config for exclusive access --rollback / --no-rollback rollback changes after push --help Show this message and exit.

NGAGE PULL Gets current config from device Usage: ngage pull [OPTIONS] HOST [FILENAME] pull config from a device Options: --output-dir TEXT directory to save file to, will be named from filename option --help Show this message and exit.

UTILITY FUNCTIONS Useful for debugging, working on device directly with a git log. commit commit changes on a device diff get diff from device rollback rollback device config

HELPER SCRIPTS These scripts assume that configs are generated to gen/$hostname/ and numbered in order they should be pushed, for example: $ ls -la gen/chix0.ch2/ 00-basesys.conf 01-chassis.conf 03-interfaces.conf 99-qfx.conf

HELPER SCRIPTS diff.sh #!/bin/bash set -x hostname=$1 shift if test -z "$hostname"; then echo "usage, $0 <hostname> [OPTIONS]" exit 1 fi ngage push --diff --no-commit $hostname gen/$hostname/* $@ ngage rollback $hostname

HELPER SCRIPTS Pushes config to a single device #!/bin/bash set -x hostname=$1 shift if test -z "$hostname"; then echo 'usage, pushone <hostname> [OPTIONS]' exit 1 fi ngage push $hostname gen/$hostname/* $@

DEVICE SUPPORT Junos / native using eznc Napalm http://napalm.readthedocs.io/en/latest/ support (lacks pull) adds: eos ios iosxr etc

WHAT IS NEXT? Better logging, save diffs every push Bird plugin Patches welcome!

VAPING Smokeping alternative written in python https://github.com/20c/vaping http://vaping.readthedocs.io/en/latest/ Realtime default config demo at https://status.unitedix.net/

GREEN IO FRAMEWORK Efficiently multiplexes input / output for you, currently uses gevent, but the io layer is completely abstracted to be able to swap out backends at ease (think py3 asynchio).

PLUGIN ARCHITECTURE Everything is a plugin! Can also be used for a generic IO daemon

PLUGINS fping - uses fping to ping multiple hosts command* - run a command and take output, for example: ssh $router show interfaces display json zeromq - sends output over zeromq to configured host vodka - standalone web server for displaying graphs * ssh display json is up to 10x faster than snmp on QFXs

CONFIGURATION Easy to use yaml, supports inheritance plugins: - name: std_fping type: fping count: 10 interval: 3s - name: more_fping type: std_fping count: 20

OUTPUT View demo at https://status.unitedix.net

WHAT IS NEXT? More plugins (RRD, sflow) Python 3 asyncio Patches welcome!

QUESTIONS / COMMENTS? grizz@20c.com https://github.com/20c/ngage https://github.com/20c/vaping

NEW TOOLS ngage/vaping MATT GRISWOLD grizz@20c.com