1

Our build server setup looks like this:

  • 6 x Windows Server 2012 R2, physical machines, each running:
  • one Hyper-V Windows 7 VM each basically using all the resources of the host

When we need to add any developer tooling that cannot be added through xcopy deployment via our Jenkins master, we currently RDP into each VM, manually install the tool there (may involve activating a per-machine-license) and then pull one VM copy of the new setup for backup purposes: So if we need to (re-) setup a new build node, we just copy over this image, and basically change it's machine name and register it with out Jenkins master.

The VM images are supposed to be 100% identical modulo:

  • machine name
  • couple of node-identifying config files (e.g. jenkins-slave.xml)
  • licensed tools that need different license keys per machine (couple of them!)

Is there a reasonably easy way to improve upon this manual maintenance of the build nodes?

Even if I were to do scripted copies of a master VM image, that still would not help with the per-machine configuration necessary, or would it?

Martin
  • 563
  • 4
  • 10
  • 25
  • You can use Packer to generate VM images from a config file, and you can use terraform to provision them (=install stuff on them). No need to do manual steps ever again... – Wilbert Jun 08 '16 at 08:57
  • @WIlbert - you know, links would have been nice :-P ... anyway, these don't seem to support Hyper-V, which is really a convenient choice for a Win-Only shop. – Martin Jun 08 '16 at 09:53
  • Microsoft wrote a [plugin adding hyper-v support for packer](https://github.com/MSOpenTech/packer-hyperv). Terraform can be used to provision (which is independent of vm technology), e.g. install some msi's inside the vm. You cannot yet control the vm deployments itself, that's true. Still, it's an amazingly useful tool. – Wilbert Jun 08 '16 at 10:06
  • I use xendesktop. I do one VM, image it for the citrix pvs (that become one vhd) and after I publish the VM, the system let the VM boot in PXE and that VHD is the base for all VM I publish. HyperV is supported. If I change the base image in example, each VM got the change when they reboot. – yagmoth555 Jun 08 '16 at 10:16

0 Answers0