2010-02-10 07:10:16 +00:00
# Vagrant
2010-01-22 03:13:53 +00:00
2013-01-14 01:44:08 +00:00
* Website: [http://www.vagrantup.com ](http://www.vagrantup.com )
2011-11-03 04:19:06 +00:00
* Source: [https://github.com/mitchellh/vagrant ](https://github.com/mitchellh/vagrant )
2010-03-07 20:07:07 +00:00
* IRC: `#vagrant` on Freenode
2010-09-09 05:28:30 +00:00
* Mailing list: [Google Groups ](http://groups.google.com/group/vagrant-up )
2010-03-07 20:05:53 +00:00
2013-01-14 01:44:08 +00:00
Vagrant is a tool for building and distributing development environments.
2010-03-07 20:05:53 +00:00
2013-01-14 01:44:08 +00:00
Vagrant provides the framework and configuration format to create and
manage complete portable development environments. These development
environments can live on your computer or in the cloud, and are portable
between Windows, Mac OS X, and Linux.
2010-03-07 20:05:53 +00:00
## Quick Start
First, make sure your development machine has [VirtualBox ](http://www.virtualbox.org )
2013-01-14 01:44:08 +00:00
installed. After this, [download and install the appropriate Vagrant package for your OS ](http://downloads.vagrantup.com ). If you're not on Mac OS X or Windows, you'll need
2012-06-27 16:35:54 +00:00
to add `/opt/vagrant/bin` to your `PATH` . After this, you're ready to go!
2010-03-07 20:05:53 +00:00
To build your first virtual environment:
2013-01-14 01:44:08 +00:00
vagrant init precise32 http://files.vagrantup.com/precise32.box
2010-03-07 20:05:53 +00:00
vagrant up
2010-08-02 00:28:44 +00:00
Note: The above `vagrant up` command will also trigger Vagrant to download the
2013-01-14 01:44:08 +00:00
`precise32` box via the specified URL. Vagrant only does this if it detects that
2010-08-02 00:28:44 +00:00
the box doesn't already exist on your system.
2011-11-24 23:05:51 +00:00
## Getting Started Guide
2010-03-07 20:05:53 +00:00
To learn how to build a fully functional rails development environment, view the
2012-08-06 17:01:41 +00:00
[getting started guide ](http://vagrantup.com/v1/docs/getting-started/index.html ).
2010-03-07 20:05:53 +00:00
2010-03-09 17:01:20 +00:00
## 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:
2010-08-01 00:39:54 +00:00
rake install
2010-03-09 17:01:20 +00:00
2010-02-10 07:10:16 +00:00
## Contributing to Vagrant
2010-01-22 03:13:53 +00:00
2011-11-03 04:27:32 +00:00
### Dependencies and Unit Tests
2010-02-10 07:13:16 +00:00
To hack on vagrant, you'll need [bundler ](http://github.com/carlhuda/bundler ) which can
2011-11-03 04:19:06 +00:00
be installed with a simple `gem install bundler` . Afterwords, do the following:
2010-01-22 03:13:53 +00:00
2010-02-10 07:10:16 +00:00
bundle install
2010-08-14 06:26:48 +00:00
rake
2010-01-22 03:13:53 +00:00
2011-11-03 04:27:32 +00:00
This will run the unit test suite, which should come back all green! Then you're good to go!
2010-12-24 00:35:41 +00:00
If you want to run Vagrant without having to install the gem, you may use `bundle exec` ,
like so:
bundle exec bin/vagrant help
2011-11-03 04:27:32 +00:00
### 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