My company works on a project were we ship an appliance (a CentOS VM) that runs several services.
Currently this appliance is regenerated every time "manually" but I'd like to improve the process and make it less error prone by automating most of it.
Is it possible to automate the creation of a Virtual Machine (possibly, using VMWare) ? If so, to what extent can this automation go and what tools would I have to use to do that ?
Have a look into Vagrant, it can help with automating VM creation.
VMWare workstation has APIs you can use to automate this process. They are called the VMWare VIX APIs. Have a look at http://communities.vmware.com/community/vmtn/developer/forums/automationapi?tstart=0
Bindings are provided for C, Perl and COM (Visual Basic, VBscript, C#), but there also unofficial modules for other languages such as Python.
Since you are using CentOS you could automatize it with KVM + Kickstart file via a PXE boot.
I know it's not VMWare related but your whole process could be automated this way using native solutions.
Plus you could have different kickstart files answering specific customer request for your applicance.
You can use Ganeti and Ganeti Instance Image where you can create an image of an already created VM and as a base for new VMs. It takes a little time to get used to it, but after that creating a VM is one command away.