• Stars
    star
    154
  • Rank 242,095 (Top 5 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created over 10 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Wistar is a tool to help create and share network topologies of virtual machines. It is designed to be light weight enough to run on a laptop or a small dedicated server.

Wistar

Wistar is a tool to help create and share complex topologies of Virtual Machines and appliances.

screenshot

The most detailed, up to date, documentation can be found here: http://wistar.readthedocs.io/en/latest/

Your (virtual) CPU must expose the virtualization hooks. You can check with a simple grep.

egrep ‘(vmx|svm)’ /proc/cpuinfo

If nothing is returned, you may need to modify BIOS to enable virtualization. Users running wistar within a virtual machine can search the Internet for enabling the VT hooks. As a note, wistar will not work in Virtualbox as the software does not support exposing the hooks to the guest. Some IaaS providers do not expose the flags (e.g., AWS) while others (i.e., DigitalOcean) do.

Quick Start instructions for KVM deployments:

To get started, you need a server running Ubuntu 14.04 (or some similar flavor) with libvirt, kvm and a few python tools.

Install the required Ubuntu packages-

root@wistar-build:~# apt-get install python-pip python-dev build-essential qemu-kvm libz-dev libvirt-bin socat python-pexpect python-libvirt libxml2-dev libxslt1-dev unzip bridge-utils genisoimage python-netaddr libffi-dev libssl-dev python-markupsafe libxml2-dev libxslt1-dev git mtools dosfstools

Install Python packages-

root@wistar-build:~# pip install pyvbox junos-eznc pyYAML Django==1.9.9 cryptography websocket-client

Wistar uses Linux bridges to connect VMs to each other and to any external networks. To connect VMs to the external world, you'll need at least one NIC in a bridge. In this example, the first NIC is put in a bridge called 'br0'. To connect VMs to this NIC, add an 'External Bridge' object to the topology with the corresponding name 'br0'. Multiple external bridges are supported.

Here is an example /etc/network/interfaces. Modify as needed for your set-up.

auto lo
iface lo inet loopback

iface eth0 inet manual

auto br0
iface br0 inet static
	address 10.10.11.60
	netmask 255.255.240.0
	network 10.10.0.0
	broadcast 10.10.15.255
	gateway 10.10.10.1
	dns-nameservers 8.8.8.8
	bridge_ports eth0
	bridge_stp off
	bridge_fd 0
	bridge_maxwait 0

The easiest way to change the new configuration is to reboot as sudo service networking restart and sudo /etc/init.d/networking server are broken in Ubuntu 14.04 Server.

Create the images and instances directories.

root@wistar-build:~# mkdir -p /opt/wistar/user_images/instances
root@wistar-build:~# mkdir -p /opt/wistar/seeds
root@wistar-build:~# mkdir -p /opt/wistar/media

Clone the GitHub repo.

root@wistar-build:/opt/wistar# git clone https://github.com/juniper/wistar.git wistar-master

Create the SQL tables.

root@wistar-build:/opt/wistar# cd wistar-master/
root@wistar-build:/opt/wistar/wistar-master# ./manage.py migrate
--snip--
root@wistar-build:/opt/wistar/wistar-master#

For development you can use the built-in web server.

root@wistar-build:/opt/wistar# cd wistar-master/
root@wistar-build:/opt/wistar/wistar-master# ./manage.py runserver 0.0.0.0:8080

Alternatively, you can configure a more robust web server such as Apache or nginx.

Here is how you can configure apache for use with wistar.

root@wistar-build:~# apt-get install apache2 libapache2-mod-wsgi
root@wistar-build:~# cat /etc/apache2/sites-enabled/999-wistar.conf
Define wistar_path /opt/wistar/wistar-master
Listen 8080
<VirtualHost *:8080>
   WSGIScriptAlias / ${wistar_path}/wistar/wsgi.py
   WSGIDaemonProcess wistar python-path=${wistar_path}
   WSGIProcessGroup wistar
   ErrorLog /var/log/apache2/wistar.log
   CustomLog /var/log/apache2/wistar_access.log combined
   Alias /static/ ${wistar_path}/common/static/

   <Directory "${wistar_path}/common/static">
   	Require all granted
   </Directory>
   <Directory ${wistar_path}>
   	<Files wsgi.py>
   		Require all granted
   	</Files>
   </Directory>
</VirtualHost>

Grant the apache user permissions to the wistar directory and the apache/wistar log files:

root@wistar-build:~# chown -R www-data:www-data /opt/wistar
root@wistar-build:~# chown -R www-data:www-data /var/log/apache2/wistar.log
root@wistar-build:~# chown -R www-data:www-data /var/log/apache2/wistar_access.log

Also, ensure the apache user is in the libvirtd group.

root@wistar-build:~# cat /etc/group | grep libvirt
libvirtd:x:111:nembery,nova,www-data

If not, use the following command to add the user to the group.

root@wistar-build:~# usermod -a -G libvirtd www-data

Quick Start for VMWare based deployments:

A Packer based project to automatically build OVF images for VMWare can be found here: https://github.com/nembery/wistar_packer

Uploading Images and deploying your first topology:

To begin, browse to the 'Images' page and upload a qcow2 or vmdk based image.

Next, browse to Topologies to create and deploy a new network!

Send questions to [email protected]

Happy Hacking!

Contributions

Wistar was written by Nathan Embery ([email protected]) with contributions from:

  • Subrata Mazumdar
  • Justin Adrian
  • Jeff Loughridge
  • Wayne Chan
  • Robin Gilijamse
  • Matt Dinham

Getting help

Send questions to the Wistar Slack channel at:

https://wistar-vtm.slack.com/

To sign up for the Slack channel, visit our heroku app here: https://wistar.herokuapp.com/

Visit this page: https://wistar.herokuapp.com/ to generate an invite.

The most detailed, up to date, documentation should be available here: http://wistar.readthedocs.io/en/latest/

More Repositories

1

py-junos-eznc

Python library for Junos automation
Python
666
star
2

contrail-controller

Contrail Controller
441
star
3

warp17

The Stateful Traffic Generator for Layer 1 to Layer 7
C
424
star
4

ansible-junos-stdlib

Junos modules for Ansible
Python
302
star
5

libxo

The libxo library allows an application to generate text, XML, JSON, and HTML output using a common set of function calls. The application decides at run time which output style should be produced.
C
287
star
6

go-netconf

NETCONF implementation in Go.
Go
253
star
7

open-nti

Open Network Telemetry Collector build with open source tools
Python
226
star
8

contrail-vrouter

Contrail Virtual Router
219
star
9

grpc-c

C implementation of gRPC layered on top of core library
C
218
star
10

open-register-design-tool

Tool to generate register RTL, models, and docs using SystemRDL or JSpec input
Verilog
170
star
11

junoscriptorium

A repository for scripts and script libraries
XSLT
151
star
12

vqfx10k-vagrant

Vagrant projects for vQFX10k
HTML
133
star
13

jsnapy

Python version of Junos Snapshot Administrator
Python
115
star
14

OpenClos

Python
114
star
15

yang

Junos Yang module
92
star
16

OpenJNPR-Container-vMX

OpenJNPR-Container-vMX
Shell
86
star
17

jxmlease

A Python module for converting XML to intelligent Python data structures, and converting Python data structures to XML.
Python
81
star
18

netconf-java

Java library for NETCONF
Java
72
star
19

junos-terraform

Go
70
star
20

py-junos-netconify

Junos console/bootstrap automation Python module
Python
65
star
21

net-netconf

A Ruby gem for NETCONF
Ruby
64
star
22

contrail-ansible-deployer

Ansible deployment for contrail
60
star
23

juise

juise is the JUNOS User Interface Script Environment, which allows users to develop, test, and execute script outside of JUNOS. For more information about juise, see:
C
53
star
24

libslax

libslax is a C implementation of the SLAX programming language, a dialect of XSLT that is more perl/C-like and easier to read/code/use. For additional information about SLAX, see
C
49
star
25

contrail-docker

Python
48
star
26

contrail

Contrail repo for core components (go based)
Go
44
star
27

contrail-kubernetes

OpenContrail Kubernetes integration
Go
44
star
28

healthbot-rules

Python
43
star
29

ruby-junos-ez-stdlib

A collection of Ruby classes to make Junos automation Easy. This is the "standard library" supported on all devices.
Ruby
35
star
30

YAPT

Yet Another Provisioning Tool
Python
31
star
31

vmx-docker-lwaftr

vMX Lightweight 4over6 Virtual Network Function with Snabb in a Docker Container
Python
30
star
32

contrail-installer

Install scripts for OpenContrail
Shell
30
star
33

jtimon

Junos Telemetry Interface (JTI) client
Go
30
star
34

nita

The parent repo of a framework to automatically build and test networks.
Shell
29
star
35

py-space-platform

Python library for Junos Space APIs
HTML
28
star
36

Intro-to-Using-Ansible-with-Junos-OS

Examples of Using Ansible with Junos Devices
27
star
37

puppet-netdev-stdlib-junos

Junos specific Provider code for "netdev_stdlib". Netdev is a vendor-neutral network abstraction framework developed by Juniper Networks and contributed freely to the DevOps community.
Ruby
25
star
38

vSRX-AWS

vSRX for Amazon Web Services
HCL
24
star
39

junos-snapshot-administrator

Shell
23
star
40

ebplane

eBPF based dataplane prototypes
C++
23
star
41

splitcopy

Improves file transfer rates when copying files to/from JUNOS/EVO/*nix hosts.
Python
22
star
42

docker-saltstack-junos

Dockerfile to create a working Saltstack container for Junos
Python
21
star
43

contrail-vnc

Contrail Virtual Network Controller
21
star
44

netconf-perl

Perl library for Netconf
Perl
20
star
45

meshrr

Hierarchical Route Reflectors and Route Servers @ Scale w/ Juniper cRPD & Kubernetes
Python
20
star
46

contrail-neutron-plugin

Opencontrail Neutron plugin + extensions
18
star
47

contrail-operator

Juniper K8s contrail operator
Go
18
star
48

JP4Agent

Juniper's P4 Runtime server implementation.
C++
18
star
49

telemetry

Juniper Telemetry models, augments and deviations
18
star
50

simple_reg_model

System verilog register model for uvm testbenches.
Perl
18
star
51

vijava

17
star
52

contrail-tripleo-heat-templates

Contrail tripleO heat templates
17
star
53

contrail-container-builder

Build contrail networking control components as micro-services
17
star
54

ruby-junos-ez-srx

Ruby libraries support Junos automation via NETCONF - "SRX library"
Ruby
16
star
55

contrail-web-core

Contrail web ui backend code
16
star
56

juniper-pytest

Juniper Pytest is an automation developer's toolkit. It provides everything an automation developer might need to automate configuration and validation of Juniper network equipment with Python and Ansible.
Makefile
16
star
57

topoviz

A network topology visualisation tool. Creates a force directed graph from the output of a JUNOS cli cmd
Perl
14
star
58

contrail-dev-env

Shell
14
star
59

jet-app-store

App store for Jet Apps
Python
14
star
60

terraform-provider-apstra

Apstra Terraform Provider
Go
14
star
61

netconf-call-home

C
14
star
62

contrail-heat

Openstack heat plugin and resources
13
star
63

contrail-charms

Juju charms for Contrail services.
13
star
64

yangc

YANG Compiler for JUNOS
C
12
star
65

contrail-server-manager

contrail server management
Python
12
star
66

contrail-sandesh

Contrail analytics IDL
C++
12
star
67

contrail-generateDS

Contrail XML schema code generator
Python
12
star
68

virtfs

VirtFS kernel driver for FreeBSD
C
12
star
69

nita-robot

Robot Framework test automation framework, part of the Juniper NITA solution
Python
12
star
70

contrail-kubernetes-docs

12
star
71

nita-webapp

nita-webapp, a lightweight django based webapp that orchestrates jenkins, ansible and robot, part of the Juniper NITA solution
JavaScript
12
star
72

contrail-test

12
star
73

contrail-packages

Build and packaging scripts for OpenContrail.
11
star
74

contrail-helm-deployer

Contrail Helm based deployment
11
star
75

contrail-fabric-utils

packaging
11
star
76

container-networking-ansible

Ansible provisioning for container networking solutions using OpenContrail
Python
11
star
77

contrail-dpdk

dpdk fork
C
11
star
78

lab-doc-convert

Shell
11
star
79

nita-yaml-to-excel

yaml2xls, a library and tools for converting between yaml files and MS excel, part of the Juniper NITA solution
Python
11
star
80

juniper-newrelic-plugin

New Relic Plugin for monitoring Juniper devices
Python
11
star
81

py-jnpr-wlc

EXPERIMENTAL: Python library for Juniper Wireless Lan Controller (WLC) product
Python
10
star
82

contrail-go-api

golang API bindings for OpenContrail
Go
10
star
83

contrail-web-controller

contrail web ui controller code
10
star
84

TelemetryInterface

9
star
85

vSRX-Azure

Python
9
star
86

contrail-packaging

Contrail VNC packaging
9
star
87

contrail-specs

Repository for docs and specs
9
star
88

vmx-heat-templates

vMX Heat templates
Python
8
star
89

healthbot-py-client

Python library that provides REST interface to the HealthBot server
Python
8
star
90

netlink-agent

netlink
C
8
star
91

junos-extension-toolkit

A repository to store JET IDL files
7
star
92

contrail-build

Contrail VNC build tools
7
star
93

jetez

Lightweight alternative to JET
Python
7
star
94

space-ansible-collection

space-ansible-collection
Python
7
star
95

nita-cli

Python
7
star
96

nita-ansible

Ansible, a radically simple IT automation engine, part of the Juniper NITA solution
Jinja
7
star
97

contrail-chef

Contrail Chef Cookbooks
HTML
6
star
98

amt-vlc

Module for the VLC media player leveraging AMT functionality
C
6
star
99

contrail-networking

Automate contrail config provisioning using GitOps based delivery
6
star
100

qfx5100-book

GitHub Repo for the O'Reilly QFX5100 book by Doug Hanks
Ruby
6
star