At Balanced, we use Vagrant for all our developer work. These are common settings, helpers, and utilities for facilitating Vagrantfile management as well as other virtualization environments.
vagrant box add ubuntu/precise64 https://vagrantcloud.com/ubuntu/boxes/precise64/versions/1/providers/virtualbox.boxGiven that Vagrant's Vagrantfile is just plain ruby code, it is possible to extend it in many different ways.
However, it is preferable that we try to enforce uniformity across the Vagrantfile, so custom ruby code for modifications is
discouraged. If there's an addition that is welcome to the project, please open up a github issue.
That being said, the current way to utilize Vagabond is to use it as submodule in a parent project.
The current way on how to use Vagabond is to include it as a git submodule. Then run:
ln -s vagabond/VagrantfileMost developers will have custom settings, i.e. locations on where code will be stored, and they they will also need to customize the machine for their own machines or maybe even using remote clouds.
Projects like the below can help produce this effect:
Vagabond currently is using Nugrant to control customizations to a Vagrantfile. It works by allowing a developer to place a .vagrantfile, that's not checked into VCS, with personalizations. The .vagrantuser file should be in the $YOUR_PROJECT_PATH folder. Here's an example tree:
$YOUR_PROJECT_PATH
$YOUR_PROJECT_PATH/vagabond # submodule / cloned
$YOUR_PROJECT_PATH/Vagrantfile -> vagabond/Vagrantfile
$YOUR_PROJECT_PATH/.vagrantuser # <-- your personalizations **NOT IN VCS (i.e. Git, etc)**# -*- mode: yaml -*-
---
providers: {
virtualbox: {
memory: 4096,
cpus: 2
},
aws: {
region: us-west-1,
availability_zone: us-west-1a,
ssh_key: ~/.ssh/id_rsa.pub,
flavor_id: m3.2xlarge,
iam_profile_name: some-profile,
}
}
synced_folders:
- folder_1
- folder_2
exec:
- "ENV['USER']"This trick is really cool to update git submodules and serves as a really neat way to manage and update git submodules.
First, run this:
git config --global alias.up-sub '!f() { cd $1 && git checkout master && git pull && git submodule update --init --recursive; }; f'Then, when you can easily update to the latest Vagabond by running:
git up-sub vagabondBorrowing from this StackOverflow Question and this Vagrant mailing-list question, it seems that this is a common concern.
Balanced has previously used one Vagrantfile per project and that didnt' scale as many
Vagrantfiles were divergent and required constant updating.
From this other stackoverflow question about git repo in a subdirectory, we can also see this is the general direction to take.
git clone git@github.com:balanced-cookbooks/vagabond.gitIt was either that or hobo :-D