Go to file
Mitchell Hashimoto 44804ce94b Fix old channel usage on chef client provisioner 2012-10-26 16:39:51 -07:00
bin Very early SIGINTs no longer cause ugly stack traces. 2012-08-10 00:30:58 -07:00
config config.ssh.shell now contains full shell command 2012-05-23 15:30:16 -07:00
contrib Make it more future proof by not using first and last command 2012-04-24 21:46:54 +02:00
keys Fix ppk path by just... not using ppk anymore. [GH-634] 2012-01-12 18:03:35 -08:00
lib Document the box collection format a bit more 2012-09-27 11:57:40 -07:00
plugins Fix old channel usage on chef client provisioner 2012-10-26 16:39:51 -07:00
tasks Make acceptance tasks easier to run 2012-01-08 23:04:14 -08:00
templates Update some translations 2012-09-27 14:00:20 -07:00
test fixes an exception issue when a non-directory appears in the boxes dir 2012-09-25 21:13:38 -05:00
.gitignore Test: Ignore the boxes/ folder which is used for acceptance tests 2011-11-22 19:28:46 -08:00
.yardopts YARD and some documentation 2010-09-22 09:43:30 -06:00
CHANGELOG.md Add 1.0.4 and 1.0.5 to CHANGELOG for master 2012-09-27 14:02:58 -07:00
Gemfile Remove all the virtualbox shenanigans in the Gemfile 2011-12-21 23:30:45 -08:00
LICENSE Update LICENSE year 2012-01-15 21:17:10 -08:00
README.md Fix 2 broken document links 2012-08-06 14:01:41 -03:00
Rakefile stdout.sync = true for rake tasks. 2011-11-13 19:41:38 -08:00
vagrant.gemspec Remove global variables 2012-03-30 19:36:26 -07:00

README.md

Vagrant

Vagrant is a tool for building and distributing virtualized development environments.

By providing automated creation and provisioning of virtual machines using Oracles VirtualBox, Vagrant provides the tools to create and configure lightweight, reproducible, and portable virtual environments. For more information, see the part of the getting started guide on “Why Vagrant?

Quick Start

First, make sure your development machine has VirtualBox installed. After this, download the appropriate Vagrant package for your OS and install that. If you're not on Mac OS X or Windows, you'll need to add /opt/vagrant/bin to your PATH. After this, you're ready to go!

To build your first virtual environment:

vagrant init lucid32 http://files.vagrantup.com/lucid32.box
vagrant up

Note: The above vagrant up command will also trigger Vagrant to download the lucid32 box via the specified URL. Vagrant only does this if it detects that the box doesn't already exist on your system.

Getting Started Guide

To learn how to build a fully functional rails development environment, view the getting started guide.

Installing the Gem from Git

If you want the bleeding edge version of Vagrant, we try to keep master pretty stable and you're welcome to give it a shot. The following is an example showing how to do this:

rake install

Contributing to Vagrant

Dependencies and Unit Tests

To hack on vagrant, you'll need bundler which can be installed with a simple gem install bundler. Afterwords, do the following:

bundle install
rake

This will run the unit test suite, which should come back all green! Then you're good to go!

If you want to run Vagrant without having to install the gem, you may use bundle exec, like so:

bundle exec bin/vagrant help

Acceptance Tests

Vagrant also comes with an acceptance test suite which runs the system end-to-end, without mocking out any dependencies. Note that this test suite is extremely slow, with the test suite taking hours on even a decent system. A CI will be setup in due time to run these tests automatically. However, it is still useful to know how to run these tests since it is often useful to run a single test if you're working on a specific feature.

The acceptance tests have absolutely zero dependence on the Vagrant source. Instead, an external configuration file must be used to give the acceptance tests some parameters (such as what Vagrant version is running, where the Vagrant vagrant binary is, etc.). If you want to run acceptance tests against source, or just want to see an example of this file, you can generate it automatically for the source code:

rake acceptance:config

This will drop an acceptance_config.yml file in your working directory. You can then run a specific acceptance test like so:

ACCEPTANCE_CONFIG=./acceptance_config.yml ruby test/acceptance/version_test.rb

That's it!

If you're developing an acceptance test and you're unsure why things might be failing, you can also view log output for the acceptance tests, which can be very verbose but are a great help in finding bugs:

ACCEPTANCE_LOGGING=debug ACCEPTANCE_CONFIG=./acceptance_config.yml ruby test/acceptance/version_test.rb