views:

1337

answers:

5

I'm currently experimenting with build script, and since I have an ASP.net Web Part under source control, my build script should do that at the end:

  1. Grab the "naked" Windows 2003 IIS VMWare or Virtual PC Image from the Network
  2. Boot it up
  3. Copy the Files from the Build Folder to the Server
  4. Install it
  5. Do whatever else is needed

I have never tried automating a Virtual Machine, but I saw that both VMWare and Virtual Server offer automation facilities. While I cannot use Virtual Server (Windows XP Home :-(), Virtual PC works.

Does anyone here have experience with either VMWare Server or Virtual PC 2007 SP1 in terms of automation?

Which one is better suited (I run windows, so the Platform-independence of VMWare does not count) and easier to automate?

+14  A: 

With VMWare, there is the Virtual Machine Automation APIs (VIX API). You can find the reference guide here. It works with VMWare Server and WorkStation, but AFAIK it's not available for ESX Server.

From the main page for VIX:

The VIX API allows you to write scripts and programs that automate virtual machine operations. The API is high-level, easy to use, and practical for both script writers and application programmers. It runs on VMware Server and Workstation products, both Windows and Linux. Bindings are provided for C, Perl, and COM (Visual Basic, VBscript, C#).

Chris Miller
+1  A: 

VirtualBox also has API's for automating their VM's.

Joel Lucsy
+1  A: 

To follow-up to @Chris, ESX is extremely scriptable. A client I've been working with recently has built a web service that launches a VMware script to create the VM they need, then start the VM with a custom boot ISO. That ISO includes all the kickstart or unattend.txt info it needs to do a totally unassisted OS build.

warren
+3  A: 

I agree with Chris. Virtual Machine Automation APIs is a very good possibility for automating of virtual machine operations. VIX API Version 1.6.2 can be used for automating of ESX guest operations as well.

Maria Shalnova
+3  A: 

Use http://vmwaretasks.codeplex.com rather than the raw VixCOM API if you're going to do this in C#.

dblock