vagrant/website/www/source/blog/2013-12-09-vagrant-1-4.html...

146 lines
5.9 KiB
Markdown

---
page_title: "Vagrant 1.4"
title: "Vagrant 1.4"
author: Mitchell Hashimoto
author_url: https://github.com/mitchellh
---
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](/downloads.html).
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](https://github.com/fgrehm),
[Paul Hinze](https://github.com/phinze),
and [Teemu Matilainen](https://github.com/tmatilai).
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](https://github.com/mitchellh/vagrant/blob/v1.4.0/CHANGELOG.md).
This blog post will cover:
* [Docker provisioner](/blog/vagrant-1-4.html#docker)
* [Machine-readable output](/blog/vagrant-1-4.html#machine-readable)
* [Enforcing a Vagrant version from your Vagrantfile](/blog/vagrant-1-4.html#vagrant-version)
* [Synced folder plugins](/blog/vagrant-1-4.html#synced-folder-plugins)
* [Minor improvements](/blog/vagrant-1-4.html#minor-improvements)
And we'll conclude by talking about
[plans for Vagrant 1.5 and beyond](/blog/vagrant-1-4.html#vagrant-1-5).
READMORE
<a id="docker"></a>
### Docker Provisioner
Vagrant 1.4 introduces a [Docker provisioner](http://docs.vagrantup.com/v2/provisioning/docker.html)
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.
<a id="machine-readable"></a>
### Machine-Readable Output
Vagrant now has [machine-readable output](http://docs.vagrantup.com/v2/cli/machine-readable.html) 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!
<a id="vagrant-version"></a>
### 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](http://docs.vagrantup.com/v2/vagrantfile/vagrant_version.html).
<a id="synced-folder-plugins"></a>
### 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](https://github.com/mitchellh/vagrant/tree/master/plugins/synced_folders).
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).
<a id="minor-improvements"></a>
### 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](https://github.com/mitchellh/vagrant/blob/v1.4.0/CHANGELOG.md)
for the full list.
<a id="vagrant-1-5"></a>
### 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.