- The box is not sysprepped. The sysprep is mandatory if you want to create a Domain Controller and are adding boxes to the domain. You’ll end up with 2 boxes with the same SID.
- The MAC address is cloned for every Vagrant machine that is based on the box. This becomes a problem if you want to place the hosts in a bridged network.
Then I went and Googled (after trying in vain myself) and found this repository: https://github.com/mefellows/packer-community-templates. Someone has already done it.
Here is a link to the json file: https://gist.github.com/jacqinthebox/cd3dcbf4b220c70de956.
Copy this file to the packer-windows folder and save it as ‘windows_2012_r2_sysprep.json’
Make sure you copy the Autounattend_sysprep.xml file from \packer-community-templates\answer_files\2012_r2 to the \packer-windows\answer_files\2012_r2 folder.
Now you can run packer build -only virtualbox-iso windows_2012_r2_sysprep.json. And grab a coffee.
The MAC address can be set in the Vagrant file for each machine. First you need to know what the name is of the network interface for the bridge.
Then you can insert the name of the nic in the Vagrantfile like this (see the marked lines):
Vagrant.require_version ">= 1.6.2"
$root_provision_script = <<'ROOT_PROVISION_SCRIPT'
& $env:windir\system32\tzutil /s "W. Europe Standard Time"
Vagrant.configure("2") do |config|
config.vm.box = "windows_2012_r2"
config.vm.hostname = "dsc01"
config.vm.provider :virtualbox do |v, override|
v.gui = true
config.vm.network :forwarded_port, guest: 3389, host: 3391, id: "rdp", auto_correct: true
config.vm.network :forwarded_port, guest: 22, host: 2223, id: "ssh", auto_correct: true
config.vm.provision "shell", inline: $root_provision_script
So there it is.