Feature Preview: Windows Guests
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.
» Demo
Seeing is believing, so we've prepared a couple videos below showing how easy it is to use Vagrant with Windows guests.
» Windows
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.
» RDP
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!
» Next
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.
Sign up for the latest HashiCorp news
More blog posts like this one
Vagrant Cloud is moving to HCP
Vagrant Cloud is moving to HashiCorp Cloud Platform (HCP) as the HCP Vagrant Registry.
HashiCorp 2022 Year in Review
Before we ring in the new year, here’s a look back at some of the most important moments in 2022 for HashiCorp.
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.