We use virtual machines a great deal at my company, Hyper-V mainly but we have also dabbled with ESXi plus vCenter. Besides the traditional advantage of being able to consolidate many physical machines onto one server, we find the ease of management and provisioning extremely compelling features. The high availability and DR stuff are far less important.
We often have to install our applications on a machine we had only some influence in picking, so the hardware can vary a good bit. This time the vendor is HP, the next time it may be Dell. Blade servers or not, etc. The application is complex to install, involving several (up to 30) machines sometimes. It is so nice being able to install the base hypervisor, copy a few files, and be up and running. It saves us an enormous amount of time.
Running on VMs also has its disvantages too. It is one more layer of stuff to work with. Admins may not be familiar with them. VMware's licensing model seems to punish companies with lots of servers, but only one or two VMs per server (very expensive just for management tool). Often the hypervisor puts limitations on the VMs that really matter to our application. Hyper-V's limit of 4 CPU cores leaps to mind as really annoying to us since our application will use any CPU power you give it. That ease of provisioning almost always wins out though, since we are a development shop and are constantly building and rebuilding servers for ourselves and customers.
So my general question is: if you have at least some power over picking your hardware and are working with Windows-based OSes, what should you do to be able to rubber-stamp out similar machines without resorting to virtualization with the least pain possible? Additional points for solutions that allow migrating to a different hardware configuration with minimal pain. Or is this just asking too much and should we keep going with VMs?
Well, for Windows based, bare-metal machines you should use the AIK. As for migrating systems between hardware, you will need a tool like Acronis or ShadowProtect that allows for applying an image to different hardware, especially storage controllers.
I can't think of anything that doesn't involve other licensing pain, like Altiris or Ghost. Look at it this way : The machines - do you own them, or does your customer? If it's the customer, there isn't much you can do. I mean, even aside from Ghost or VMware licenses, what about the Windows licenses? If you start imaging their hardware with your MSDN-keyed servers, everyone's going to have a bad day.
The best thing to do might be to write a very smart installer that can remotely connect to other machines and do remote installs of the other components. I've seen AV and backup software that does this - you start the MSI on Server A, and you can tell it to install the master on A, the reporting server on B, the agents on C-G. You need open ports and valid Windows creds of course, but you would anyway.
Others have provided some good pointers for the capability you've asked for. My sense though is that you'll find any of those solutions is more work and more complexity than virtualizing the machines. Obviously you'll want to check this out for yourself but this is one of the key reasons people virtualize.