Vagrant 1.4

Dec 9 2013 Mitchell Hashimoto vagrant

Vagrant 1.4 has been released! This is a major new release of Vagrant with an incredible amount of new features, improvements, and bug fixes. Vagrant 1.4 can be downloaded on our new downloads page.

First, I have to thank the new core committers of Vagrant for building many of the incredible features and improvements that made it into this release: Fabio Rehm, Paul Hinze, and Teemu Matilainen.

Vagrant 1.4 introduces no Vagrantfile backwards incompatibilities so it can be considered a drop-in upgrade for prior versions. Vagrant environments also do not need to be destroyed prior to upgrading.

There are a huge number of new features introduced in Vagrant 1.4, and this blog post will attempt to cover the major ones. For all changes see the changelog. This blog post will cover:

And we'll conclude by talking about plans for Vagrant 1.5 and beyond.

Docker Provisioner

Vagrant 1.4 introduces a Docker provisioner to automatically install Docker, pull Docker containers, and configure certain containers to run on boot.

As with all provisioners, the Docker provisioner can be used along with all the other provisioners Vagrant has in order to setup your working environment the best way possible. For example, perhaps you use Puppet to install services like databases or web servers but use Docker to house your application runtime. You can use the Puppet provisioner along with the Docker provisioner.

See the documentation for usage examples and a complete option reference.

Machine-Readable Output

Vagrant now has machine-readable output for a handful of commands. The machine-readable output makes it much easier to script Vagrant usage.

Note that not very many features of Vagrant output useful machine-readable information yet. This is just the first version with this feature and we plan to add more information as it is requested. If you'd like some data in the machine-readable output, please open an issue on the Vagrant GitHub project requesting it!

Enforcing a Vagrant Version

You now use the Vagrant.require_version helper in your Vagrantfiles to enforce that only certain versions of Vagrant be used to run that environment.

This helps avoid unexpected surprises with backwards incompatibilities or plugin incompatibilities with your Vagrantfiles. The version constraints that can be specified are very powerful and easy to use.

See the documentation for more information.

Synced Folder Plugins

Synced folder implementations can now be implemented as standalone plugins. For example, NFS synced folders are implemented as a plugin within the core of Vagrant.

The ability to create new synced folder implementations opens the door to very easily try new techniques for faster file syncing to and from the guest environment, or more appropriate file syncing mechanisms.

Some new synced folder implementations are already in the works: rsync, scp, NFS client (host is the client), etc.

Writing synced folder plugins is not yet documented, since the plugin development documentation is undergoing a large revamp at the moment. See the core of Vagrant for examples (such as NFS).

Minor Improvements

In addition to all the features above, there are many more features as well as many more minor improvements made to Vagrant. This section documents just a handful.

Box downloading will resume if interrupted rather than starting from scratch. This should help in cases where internet is not reliable and you're downloading large boxes.

Box checksums can be provided both in the Vagrantfile and on the command-line when adding boxes. Vagrant will verify the checksum with the downloaded contents.

NFS on VirtualBox no longer requires a static IP and now works with private networks using DHCP, as well.

Running multiple "vagrant up" commands in parallel with VirtualBox is now safe. This is a boon for CI or automated environments.

Multiple SSH keys can be specified in your Vagrantfile, allowing you to replace the insecure Vagrant key with a more secure key during provisioning.

And so much more. See the complete changelog for the full list.

Vagrant 1.5 and Beyond

There are some big plans for the future of Vagrant. Work on Vagrant 1.5 will begin right away and we have some great things planned.

Without giving away specific features, our areas of focus will be box versioning, Windows guests, more features that plugins can hook into, more synced folder implementations, more features for provisioners (such as Chef installing itself).

Beyond that, it is time to start shipping more providers out of the box with Vagrant. Work will begin on pulling the Vagrant AWS integration into the core distribution -- to start -- so that you can use Vagrant with AWS (and other providers) right after installing it and without having to juggle plugin versions.

Onwards and upwards towards Vagrant 2.0.