@mvsastry Well for VMWare you can setup templates. Just create a new machine. After boot up, install what you need, then shutdown machine. Right click the new machine and select Template -> Convert to template. It will be stored in the datastore as a template on the host it is associated with. Right click template and select "new VM from template"
The downside is if you have different software depending on where it goes then you will have to make one machine per deployment. So best to name then accordingly.
You can also get fancy and use sysprep to each machine before shutdown and this way it will setup hardware drivers depending on what host it is on. But that is another can of worms lol