Feature Preview: Windows Guests

Feature Preview: Windows Guests

Apr 21 2014    Mitchell Hashimoto

Vagrant 1.6 will add a monumental feature to Vagrant: full Windows guest support. The ability of Vagrant to manage Windows environments just as easy as Linux environments has been requested for years and the time for complete, official support has come.

Please don't mistake guest support for running Vagrant on Windows. Vagrant has fully supported running on Windows for years, and works great. Vagrant 1.6 adds support for Vagrant to run Windows within the Vagrant environments (in VirtualBox, Hyper-V, EC2, etc.).

The Windows guest support coming in Vagrant 1.6 allows you to spin up Windows environments just as easily as you would Linux environments, and lets you use PowerShell scripts, Chef, Puppet, etc. to install and configure software.

And just as Linux has vagrant ssh as a first-class citizen, Windows guests have vagrant rdp, which allow single-command access to a complete remote desktop environment to your Windows environment.

Read on to learn more.


Seeing is believing, so we've prepared a couple videos below showing how easy it is to use Vagrant with Windows guests.


Windows is hugely popular and support for Windows development environments has been the most requested feature by far for the recent year.

The Windows support is as easy to use as the Linux support: you just need a box file that has Windows pre-installed, then you vagrant up. Synced folders, networking, and provisioners all work.

Vagrant is able to communicate with Windows over either SSH or WinRM. WinRM is more conventional, but if you have Cygwin installed with an SSH server, Vagrant is able to use that too.

The support for WinRM is new in 1.6. For backwards compatibility reasons, you must explicitly tell Vagrant when to use WinRM:

Vagrant.configure("2") do |config|

» ...

config.vm.communicator = "winrm" end

That is the only change that is necessary for Vagrant to use Windows! Vagrant will automatically detect that the operating system in its environment is Windows, and will adapt accordingly.

Provisioners such as shell scripts, Chef, and Puppet are fully supported and will run within Windows Vagrant environments. The shell provisioner will run PowerShell and batch scripts if it is being used over WinRM.


Accessing a Windows machine is unlike accessing a Linux machine. The primary method for performing administrative tasks on Windows is via Remote Desktop.

For Linux, Vagrant provides vagrant ssh for one-command access to the machine. We wanted to make accessing a Windows machine just as easy, so we've created the vagrant rdp command. This command opens an RDP client pre-configured to communicate to the Vagrant environment.

If SSH is available, vagrant ssh will still work for Windows.

To open a PowerShell or command prompt, use vagrant rdp to open the remote desktop client, then open the appropriate console. This is the conventional way to work with remote Windows machines.

Thanks vagrant-windows!

Early in the Vagrant 1.6 development process, Shawn Neal and Paul Morton became core committers to Vagrant. These are two of the brains behind vagrant-windows, an impressive Vagrant plugin that has been unofficially bringing Windows guest support to Vagrant for years.

The core of the Windows support presented in this feature preview today has been from reintegrating vagrant-windows into Vagrant itself. Supporting Windows in such a smooth way wouldn't have been possible without the work done by these folks, and the public should know of their contribution.

Thank you vagrant-windows team!


This is a huge milestone for Vagrant. At least one person at every conference talk given by myself in the past two years has asked me when Vagrant will support Windows. I'm excited to finally be able to say "it does now!"

Next week we'll continue this series with another feature preview. The feature we'll be covering next week is a fun one.