Most Linux distributions are free, and do not require product keys to launch them.
The steps below are based on the great article at http://kitchen.ci/blog/test-kitchen-windows-test-flight-with-vagrant/
I have summarized the steps below to create a free Virtual Box Windows Server 2012R2 image on your workstation, so Test Kitchen can use Vagrant and Virtual Box to launch Windows instances and test cookbooks locally fast and free.
Install the Vagrant WinRm plugin
vagrant plugin install vagrant-winrm
Get BoxCutter
Create the Windows image with BoxCutter. This process will take 30 minutes or more to fully configure the Windows image. The download step may time out on slower VPN connections. In that case disconnect the VPN connection and try it again without it. In case of any error, just execute the last command again and if it can, the process will continue from the point of error.
cd ~/ mkdir boxcutter cd boxcutter git clone https://github.com/boxcutter/windows.git cd windows
Modify the BoxCutter JSON file
Change the ~/boxcutter/windows/eval-win2012r2-standard.json file to avoid the error message:
virtualbox-iso: Removing floppy drive…
==> virtualbox-iso: Error removing floppy controller: VBoxManage error: VBoxManage: error: The machine ‘eval-win2012r2-standard’ is already locked for a session (or being unlocked)
==> virtualbox-iso: VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MachineWrap, interface IMachine, callee nsISupports
==> virtualbox-iso: VBoxManage: error: Context: “LockMachine(a->session, LockType_Write)” at line 1038 of file VBoxManageStorageController.cpp
- Change “headless”: “false”, to “headless”: “true”,
- Add under “headless”: “true”,
"shutdown_timeout": "60m", "post_shutdown_delay": "120s",
- Add under every occurrence of “headless”: “{{ user `headless` }}”,
"shutdown_timeout": "{{ user `shutdown_timeout` }}", "post_shutdown_delay": "{{ user `post_shutdown_delay` }}",
Create the virtual machine
make virtualbox/eval-win2012r2-standard
Add the image to Vagrant
vagrant box add windows-2012r2 ./box/virtualbox/eval-win2012r2-standard-nocm-1.0.4.box
Test the virtual machine
Your .kitchen.yml file should look like this
--- driver: name: vagrant provisioner: name: chef_zero platforms: - name: windows-2012r2 suites: - name: MY_SUITE_NAME run_list: - recipe[MY_COOKBOOK::MY_RECIPE]
You may need to execute the kitchen converge commands as sudo to be able to launch the Windows instance.