Skip to content

Convenient provisioner of development environment for a variety of VM sandboxes.

Notifications You must be signed in to change notification settings

panchul/workspace

Repository files navigation

Workspace

If you are familiar with Virtual Box, Vagrant, Ansible, etc., you would know what this repository is. If you do not, you should - virtualization and all sorts of orchestration and provisioning are hard to void regardless of what kind of software-related activity you are involved in.

This repository contains all you need to set up a convenient development environment on your machine for distributed programming. It spawns and provisions virtual machines that have their own network configured, making it easy to apply and host any code you want to run.

I created it as a simple way to have templates and pre-made samples of relatively complicated things like distributed Erlang nodes on separate servers, trying out prof-of-concept demos for proxies and big-data tools. It could be a starting point for prototypes on variety of technologies. More information is in doc folder, doc/Links.md.

Pre-requisites include VirtualBox, Vagrant, and Ansible. Once you have those on your host machine, you can spin off the vms listed below in the order they are defined in ansible.vmhosts. File hosts_append.txt is apended to each VM's /etc/hosts to eliminate the need for dns server.

|==================+=================+======================================================|==========|  
| Ip               | Box name        | Comments                                             | misc     |   
|==================+=================+======================================================|==========|  
|192.168.10.2      | test1           | a machine to test vagrant itself(box versions, etc)  |          |  
|------------------+-----------------+------------------------------------------------------|----------|  
|192.168.10.3      | gen1            | a generic machine with shell provisioning only       |          |  
|------------------+-----------------+------------------------------------------------------|----------|  
|192.168.10.4      | gen2            | another generic machine with shell provisioning only |          |  
|------------------+-----------------+------------------------------------------------------|----------|  
|192.168.10.5      | gen3            | a more elaborate generic machine                     |          |  
|==================+=================+======================================================|==========|  
|192.168.10.6-10   | ...             |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.11     | yser1           | YARC node                                            |          |
|192.168.10.12     | yser2           | YARC node                                            |          |
|192.168.10.13     | yser3           | YARC node                                            |          |
|192.168.10.14     | yser4           | YARC node                                            |          |
|192.168.10.15     | yser5           | YARC node                                            |          |
|==================+=================+======================================================|==========|  
|192.168.10.16-20  | ...             |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.21     | ycli1           | YARC node                                            |          |
|192.168.10.22     | ycli2           | YARC node                                            |          |
|192.168.10.23     | ycli3           | YARC node                                            |          |
|192.168.10.24     | ycli4           | YARC node                                            |          |
|192.168.10.25     | ycli5           | YARC node                                            |          |
|==================+=================+======================================================|==========|  
|192.168.10.26     | cpp1            | generic sandboxes for C++ development.               |          |
|192.168.10.27     | cpp2            |    * Clones, among other things, sb_cpp repo         |          |
|192.168.10.28     | cpp3            |                                                      |          |
|192.168.10.29     | cpp4            |                                                      |          |
|192.168.10.30     | cpp5            |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.31     | erlang1         | generic sandboxes for Erlang development.            |          |
|192.168.10.32     | erlang2         |    * Clones, among other things, sb_erl repo         |          |
|192.168.10.33     | erlang3         |                                                      |          |
|192.168.10.34     | erlang4         |                                                      |          |
|192.168.10.35     | erlang5         |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.36     | scala1          | generic sandboxes for Scala development.             |          |
|192.168.10.37     | scala2          |    * Clones, among other things, sb_scala repo       |          |
|192.168.10.38     | scala3          |                                                      |          |
|192.168.10.39     | scala4          |                                                      |          |
|192.168.10.40     | scala5          |                                                      |          |
|192.168.10.40     | scala5          |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.41     | mysql1          | mySQL boxes                                          |          |
|192.168.10.42     | mysql2          |                                                      |          |
|192.168.10.43     | mysql3          |                                                      |          |
|192.168.10.44     | mysql4          |                                                      |          |
|192.168.10.45     | mysql5          |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.46     | haproxy1        | HAProxy boxes                                        |          |
|192.168.10.47     | haproxy2        |  (haproxy1 load balances http port to apache1,2,3)   |          |
|192.168.10.48     | haproxy3        |                                                      |          |
|192.168.10.49     | haproxy4        |                                                      |          |
|192.168.10.50     | haproxy5        |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.51     | shell1          | a generic sandbox for shell script development.      |          |
|                  |                 |    * Clones, among other things, sb_shell repo       |          |
|==================+=================+======================================================|==========|  
|192.168.10.52     | perl1           | a generic sandbox for Perl development.              |          |
|192.168.10.53     | perl2           |   * Clones, among other things, sb_perl repo         |          |
|==================+=================+======================================================|==========|  
|192.168.10.54     | javascript1     | Javascript sandboxes                                 |          |
|192.168.10.55     | javascript2     |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.56     | zookeeper1      | Zookeeper vms                                        |          |
|192.168.10.57     | zookeeper2      |                                                      |          |
|192.168.10.58     | zookeeper3      |                                                      |          |
|192.168.10.59     | zookeeper4      |                                                      |          |
|192.168.10.60     | zookeeper5      |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.61     | kafka_broker1   | Kafka nodes                                          |          |
|192.168.10.62     | kafka_broker2   |                                                      |          |
|192.168.10.63     | kafka_broker3   |                                                      |          |
|192.168.10.64     | kafka_broker4   |  I put kafka-monitor on this one                     |          |
|192.168.10.65     | kafka_broker5   |  dockerized (1x1 cluster )                           |          |
|==================+=================+======================================================|==========|  
|192.168.10.66     | golang1         | Golang sandbox                                       |          |
|192.168.10.67     | golang2         |                                                      |          |
|192.168.10.68     | golang3         |                                                      |          |
|192.168.10.69     | golang4         |                                                      |          |
|192.168.10.70     | golang5         |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.71     | docker1         | Docker sandbox                                       |          |
|192.168.10.72     | docker2         |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.73     | apache1         | Apache web server sandboxes.                         |          |
|192.168.10.74     | apache2         |                                                      |          |
|192.168.10.75     | apache3         |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.76     | git1            | Git sandbox. For Git daemon scenarios, etc.          |          |
|192.168.10.77     | git2            |                                                      |          |
|192.168.10.78     | git3            |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.79     | jenkins1        | Jenkins sandbox. For CICD tests, etc.                |          |
|192.168.10.80     | jenkins2        |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.81     | ssh1            | SSH sandbox. For SSH scenarios.                      |          |
|192.168.10.82     | ssh2            |                                                      |          |
|192.168.10.83     | ssh3            |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.84     | nginx1          | Nginx sandbox.                                       |          |
|192.168.10.85     | nginx2          |                                                      |          |
|192.168.10.86     | nginx3          |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.87     | wp1             | WordPress sandbox. Web servers.                      |          |
|192.168.10.88     | wp2             |                                                      |          |
|192.168.10.89     | wp3             |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.90     | snmp1           | SNMP sandbox.                                        |          |
|192.168.10.91     | snmp2           |                                                      |          |
|192.168.10.92     | snmp3           |                                                      |          |
|==================+=================+======================================================|==========|  
|192.168.10.93     | elixir1         | Elixir sandbox.                                      |          |
|192.168.10.94     | elixir2         |                                                      |          |
|192.168.10.95     | elixir3         |                                                      |          |
|==================+=================+======================================================|==========|  

The VMs have a mapped folder to the host, /vagrant, and projects, but as a general rule, they fetch and deploy everything in their own ephemeral space, for example, cloning a sandbox git repository in the home folder of user 'vagrant'.

Other sandbox repositories could be provisioned on these boxes. For example,

About

Convenient provisioner of development environment for a variety of VM sandboxes.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published