Vagrant 2.3 Introduces Go Runtime

HashiCorp Vagrant 2.3 introduces a new Vagrant executable written in Golang, tying the Vagrant architecture more closely into the broader HashiCorp ecosystem.

The Vagrant team is pleased to announce HashiCorp Vagrant 2.3, which was recently released. This release marks the first minor release on the path to 3.0 and is the initial step in porting Vagrant from Ruby to Go. (You can find more information about our roadmap for Vagrant 3.0 in our Toward Vagrant 3.0 blog post from last year.)

Beginning with this 2.3 release, the Vagrant packages now include a vagrant-go executable. This new executable is the updated Vagrant runtime written in Go. The Vagrant release packages still include the traditional Ruby-based Vagrant implementation, which is the current stable Vagrant release.

»Locate the Vagrant Codebase

To minimize confusion, the team's first Go release was developed in a private repository. However, as of the 2.3 release, this has been merged into the main branch of the repository. The Go-based source code is located in the ./internal directory within the Vagrant repository.

The Vagrant Go implementation also includes a new plugin software development kit. This SDK includes the Go-based APIs for all Vagrant plugin types, along with helper utilities for building Vagrant plugins. The plugin SDK is located in a separate repository, which can be found here.

»Try Vagrant Go Now

The quickest way to try out the Vagrant Go implementation is to download and install the latest release package. Existing Ruby-based plugins and Vagrantfiles remain compatible.

Note that the Vagrant Go implementation is currently in an alpha state. As such, performance issues as well as bugs should be expected. Before using the Vagrant Go implementation, please refer to the documentation for information about differences in how the Vagrant Go implementation stores data and information compared to the Vagrant Ruby implementation.

To try out Vagrant Go, you'll need to:

  1. Download the latest release.
  2. Set up a development environment.
  3. Use the vagrant-go command to start the Go based binary.

»Known Vagrant Go Limitations

There are several known limitations in the Vagrant Go implementation. It is important to read and understand these limitations before using the vagrant-go command. Because the Vagrant Go implementation is currently in alpha, we do not yet recommend using the Vagrant Go implementation in general workflows or development.

»We Want Your Feedback

If you encounter any issues with HashiCorp Vagrant 2.3 or want to provide feedback, please create an issue in GitHub.

Sign up for the latest HashiCorp news