Popular Categories
« IPv6 and Virtual Networks | Main | Commit Monitor for Subversion »
Tuesday
Aug192008

Configuring virtual development environment

Primary goal for setting virtual development environments on some Hyper-V server is to efficiently test the deliverables of software development project in complex configurations. _Efficiently here means that such environment has to enhance software development process at low cost (in money, time and brain damage) and low-friction (seamlessly integrates with the existing processes)._

Here's my checklist for setting up and configuring Virtual development sever (as discussed in this post):

  • Put at least 2GBs of RAM into your server (4GB+ in DualChannel mode is recommended)
  • Optionally add hardware RAID configured for the speed (to be used for VM snapshots and VHD files)
  • Install Windows Server 2008 64 bit and update it to the latest
  • Setup Hyper-V role and configure virtual network (hook it to the real network adapter)
  • Create base virtual machine images for your VM library:
  • Set-up VM with enough RAM (i.e.: at least 512 MBs are recommended for Windows Server 2008) for the guest OS to work
  • Install guest OS on VM (it is faster to capture ISO image, than use CD/DVD drive on the host machine)
  • Install Virtual Machine additions
  • Update VM to the latest
  • Configure to use virtual network and check how VM picks up your DHCP
  • Move the machine to the workgroup (if needed) and optionally configure network discovery
  • Enable Remote Desktop connections
  • Tweak firewall settings to enable File sharing and Remote desktop access
  • Ensure, that VM is accessible via the RDP
  • Install Mozilla Firefox! (you do not want to waste time in fighting the "enhanced Internet Explorer security" while configuring your virtual machines for the specific development roles).
  • Stop the machine and move its image to the VM library (and mark the file as Read-Only, JIC)
  • For every specific VM implementing development role:

  • Create fresh virtual machine from the VM library

  • Add (if needed) enough RAM to VM to support the development role (RTM for the minimal hardware requirements and double the RAM)

  • Change the administrator password to a new one

  • Install and update the software

  • Save a snapshot

  • If the VM represents constantly running development role (i.e.: integration server, SQL server etc), then configure it to start automatically

Common development VM roles that you might have (separation of concerns is applied here for the simplified management):

  • Integration Server (especially for public projects)
  • Database Server (if your application works via the ORM like NHibernate with multiple Database engines, you can cross-test stability and performance by running same integration tests against multiple connection strings)
  • Web Server
  • Distributed Application Servers (if you are developing .NET applications that distribute CPU load between different machines, these could be helpful here)
  • Testing OS Snapshots for you software (one per each OS configuration being tested; especially if you are targeting .NET Mono-enabled operating systems like SUSE SLED)

The checklist could expand later on, since I've configured only a couple of development VM servers so far.

Reader Comments (1)

[...] the next post on this subject I’ll move on to the Hyper-V and specific virtual servers/machines. Tags: [...]

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>