0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
Vagrant CI environment builder
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.11
~> 10.0
 Project Readme

Vagrant-vmenv

Vagrant-vmenv is a npm module that is used to extend the behavior of a Vagrantfile. It uses virtual machine definitions to spin up complete enviroments where you can run tests or run your code.

Installation

npm install -g http://github.com/amatas/vagrant-vmenv
cp node_modules/vagrant-vmenv/Vagrantfile.template Vagrantfile
cp node_modules/vagrant-vmenv/qi.yml.template .qi.yml

The Vagrantfile acts as a pointer to the module, it shouldn't be modified. If you want to make a change at the environment level do so in the environment configuration file, and if you want to configure how the applications are deployed and tested do so in the .qi.yml file of your repository.

Working with vms

Commands:

  • vagrant up to spin up the environment defined in the .qi.yml file.
  • vagrant destroy to stop and destroy the vm.
  • vagrant halt to shutdown the vm without destroy it.

Note:

  • vagrant up will exec the commands listed in the setup variable of each application listed in the .qi.yml file.
  • vagrant provision will exec the commands listed in the test_cmds variable of each application listed in the .qi.yml file.

Networking

A VM can have multiple virtual NICs. Two types are avilable for each NIC: public and private. The public NICs will be attached to the host's physical network, the private NICs will be attached to a private network only visible between the other VMs and the host. The IP address of a private network can be customized in the definition of the VM. An example of the network definition of a VM can be:

networks:
  privatenet:
    type: private
    ip: 192.168.45.22
  publicnet:
    type: public

If an environment has multiple VMs definitions with several NICs the hosts file of each VM will list all the IP address of each VM plus the name of the VM, this is very useful to point services between the VMs.

Forwarded ports

The port forwarding is configured in the VMs definition. The guest_port variable is the source port to be mapped to the host_port variable. The guest_port must be set in each port forward block, host_port and protocol are optionals.

ports:
  - guest_port: 8080
    host_port: 8888
    protocol: tcp
  - guest_port: 8181
    host_port: 9999
  - guest_port:8081

Shared folders

Each application can use a shared folder. If the folder variable of the application has a src key, Vagrant will map the path set in the src folder of the host to the path set in the dest variable in the VM.

folder:
  src: "."
  dest: "/app/universal"

More samples definitions can be found either in the envs directory or in the qi.yml.template.