Installing

 gem install vagrant-windows

Building a Base Box

All Windows Machines

-Enable WinRM

   winrm quickconfig -q
   winrm set winrm/config/winrs @{MaxMemoryPerShellMB="512"}
   winrm set winrm/config @{MaxTimeoutms="1800000"}
   winrm set winrm/config/service @{AllowUnencrypted="true"}
   winrm set winrm/config/service/auth @{Basic="true"}
  • Create a vagrant user

    • For things to work out of the box, username and password should both be vagrant
  • Turn off UAC (Msconfig)

  • Disable complex passwords

Servers

The Vagrant File

Add the following to your Vagrantfile

  config.vm.guest = :windows

  config.vm.forward_port 3389, 3390, :name => "rdp", :auto => true
  config.vm.forward_port 5985, 5985, :name => "winrm", :auto => true

Example:

Vagrant::Config.run do |config|

  # Configure base box parameters
  config.vm.box = "windows2008r2"
  config.vm.box_url = "./windows-2008-r2.box"
  config.vm.guest = :windows

  config.vm.forward_port 3389, 3390, :name => "rdp", :auto => true
  config.vm.forward_port 5985, 5985, :name => "winrm", :auto => true

  config.vm.provision :chef_solo do |chef|
    chef.add_recipe("your::recipe")
  end

end

What Works?

  • vagrant up|hault|reload|provision
  • Chef Vagrant Provisioner

What has not been tested

  • Everything Else!!!
  • Shell and Puppet Provisioners
    • Shell should work, though I have not vetted it yet.

What does not work

  • Complex networking setups

What Can I do to help?

  1. Contribute Code (See Below)
  2. Test Various Scenarios and file bugs for things that dont work

Contributing

  1. Fork it.
  2. Create a branch (git checkout -b my_feature_branch)
  3. Commit your changes (git commit -am "Added a sweet feature")
  4. Push to the branch (git push origin my_feature_branch)
  5. Create a pull requst from your branch into master (Please be sure to provide enough detail for us to cipher what this change is doing)

References and Shout Outs