{"id":20074221,"url":"https://github.com/juniper/wistar","last_synced_at":"2025-05-05T21:31:31.803Z","repository":{"id":19671472,"uuid":"22925082","full_name":"Juniper/wistar","owner":"Juniper","description":"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.","archived":false,"fork":false,"pushed_at":"2019-07-10T01:03:46.000Z","size":4498,"stargazers_count":155,"open_issues_count":25,"forks_count":41,"subscribers_count":42,"default_branch":"master","last_synced_at":"2025-04-09T04:26:40.442Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://wistar.readthedocs.io/en/latest/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Juniper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-13T17:45:34.000Z","updated_at":"2025-03-15T11:09:32.000Z","dependencies_parsed_at":"2022-09-21T10:33:43.881Z","dependency_job_id":null,"html_url":"https://github.com/Juniper/wistar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fwistar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fwistar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fwistar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Juniper%2Fwistar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Juniper","download_url":"https://codeload.github.com/Juniper/wistar/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252580027,"owners_count":21771253,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T14:49:56.701Z","updated_at":"2025-05-05T21:31:28.532Z","avatar_url":"https://github.com/Juniper.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Wistar\n======\n\nWistar is a tool to help create and share complex topologies of Virtual Machines and appliances.\n\n![screenshot](docs/screenshots/screenshot.png \"Wistar uses drag and drop to create topologies of networks\")\n\n\nThe most detailed, up to date, documentation can be found here:\nhttp://wistar.readthedocs.io/en/latest/\n\nYour (virtual) CPU must expose the virtualization hooks. You can check with a simple grep.\n\n`egrep ‘(vmx|svm)’ /proc/cpuinfo`\n\nIf 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. \n  \nQuick Start instructions for KVM deployments:\n-----\n\nTo get started, you need a server running Ubuntu 14.04 (or some similar flavor) with libvirt, kvm and a few python tools.\n\nInstall the required Ubuntu packages-\n```\nroot@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\n```\n\nInstall Python packages-\n```\nroot@wistar-build:~# pip install pyvbox junos-eznc pyYAML Django==1.9.9 cryptography websocket-client\n```\n\n\nWistar 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.\n\nHere is an example /etc/network/interfaces. Modify as needed for your set-up.\n```\nauto lo\niface lo inet loopback\n\niface eth0 inet manual\n\nauto br0\niface br0 inet static\n\taddress 10.10.11.60\n\tnetmask 255.255.240.0\n\tnetwork 10.10.0.0\n\tbroadcast 10.10.15.255\n\tgateway 10.10.10.1\n\tdns-nameservers 8.8.8.8\n\tbridge_ports eth0\n\tbridge_stp off\n\tbridge_fd 0\n\tbridge_maxwait 0\n```\n\nThe 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.\n\nCreate the images and instances directories.\n```\nroot@wistar-build:~# mkdir -p /opt/wistar/user_images/instances\nroot@wistar-build:~# mkdir -p /opt/wistar/seeds\nroot@wistar-build:~# mkdir -p /opt/wistar/media\n```\n\nClone the GitHub repo.\n\n```      \nroot@wistar-build:/opt/wistar# git clone https://github.com/juniper/wistar.git wistar-master\n```\n\nCreate the SQL tables.\n\n```\nroot@wistar-build:/opt/wistar# cd wistar-master/\nroot@wistar-build:/opt/wistar/wistar-master# ./manage.py migrate\n--snip--\nroot@wistar-build:/opt/wistar/wistar-master#\n```\n\nFor development you can use the built-in web server.\n```\nroot@wistar-build:/opt/wistar# cd wistar-master/\nroot@wistar-build:/opt/wistar/wistar-master# ./manage.py runserver 0.0.0.0:8080\n```\nAlternatively, you can configure a more robust web server such as Apache or nginx.\n\nHere is how you can configure apache for use with wistar.\n ```\nroot@wistar-build:~# apt-get install apache2 libapache2-mod-wsgi\nroot@wistar-build:~# cat /etc/apache2/sites-enabled/999-wistar.conf\nDefine wistar_path /opt/wistar/wistar-master\nListen 8080\n\u003cVirtualHost *:8080\u003e\n\tWSGIScriptAlias / ${wistar_path}/wistar/wsgi.py\n\tWSGIDaemonProcess wistar python-path=${wistar_path}\n\tWSGIProcessGroup wistar\n\tErrorLog /var/log/apache2/wistar.log\n\tCustomLog /var/log/apache2/wistar_access.log combined\n\tAlias /static/ ${wistar_path}/common/static/\n\n\t\u003cDirectory \"${wistar_path}/common/static\"\u003e\n\t\tRequire all granted\n\t\u003c/Directory\u003e\n\t\u003cDirectory ${wistar_path}\u003e\n\t\t\u003cFiles wsgi.py\u003e\n\t\t\tRequire all granted\n\t\t\u003c/Files\u003e\n\t\u003c/Directory\u003e\n\u003c/VirtualHost\u003e\n```\n\nGrant the apache user permissions to the wistar directory and the apache/wistar log files:\n```\nroot@wistar-build:~# chown -R www-data:www-data /opt/wistar\nroot@wistar-build:~# chown -R www-data:www-data /var/log/apache2/wistar.log\nroot@wistar-build:~# chown -R www-data:www-data /var/log/apache2/wistar_access.log\n```\n\nAlso, ensure the apache user is in the libvirtd group.\n```\nroot@wistar-build:~# cat /etc/group | grep libvirt\nlibvirtd:x:111:nembery,nova,www-data\n```\nIf not, use the following command to add the user to the group.\n```\nroot@wistar-build:~# usermod -a -G libvirtd www-data\n```\n\n\nQuick Start for VMWare based deployments:\n-----\nA Packer based project to automatically build OVF images for VMWare\ncan be found here: https://github.com/nembery/wistar_packer\n\n\nUploading Images and deploying your first topology:\n-----\n\nTo begin, browse to the 'Images' page and upload a qcow2 or vmdk based image.\n\nNext, browse to Topologies to create and deploy a new network!\n\nSend questions to nembery@juniper.net\n\nHappy Hacking!\n\n# Contributions\nWistar was written by Nathan Embery (nembery@juniper.net) with contributions from:\n- Subrata Mazumdar\n- Justin Adrian\n- Jeff Loughridge\n- Wayne Chan\n- Robin Gilijamse \n- Matt Dinham\n\n# Getting help\nSend questions to the Wistar Slack channel at:\n\nhttps://wistar-vtm.slack.com/\n\nTo sign up for the Slack channel, visit our heroku app here:\nhttps://wistar.herokuapp.com/\n\nVisit this page: https://wistar.herokuapp.com/ to generate an invite.\n\nThe most detailed, up to date, documentation should be available here:\nhttp://wistar.readthedocs.io/en/latest/\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuniper%2Fwistar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuniper%2Fwistar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuniper%2Fwistar/lists"}