Dê uma olhada no Vagrant, ele pode ajudar a automatizar a criação de VMs.
Minha empresa trabalha em um projeto onde enviamos um appliance (uma VM do CentOS) que executa vários serviços.
Atualmente, esse appliance é regenerado toda vez "manualmente", mas eu gostaria de melhorar o processo e torná-lo menos propenso a erros ao automatizar a maior parte dele.
É possível automatizar a criação de uma máquina virtual (possivelmente usando VMWare)? Em caso afirmativo, até que ponto essa automação pode ir e quais ferramentas eu teria que usar para fazer isso?
A estação de trabalho do VMWare tem APIs que você pode usar para automatizar esse processo. Eles são chamados de APIs VMWare VIX. Dê uma olhada no link
As ligações são fornecidas para C, Perl e COM (Visual Basic, VBscript, C #), mas também há módulos não oficiais para outras linguagens, como Python.
Como você está usando o CentOS, você pode automatizá-lo com o arquivo KVM + Kickstart através de uma inicialização PXE.
Eu sei que não é relacionado ao VMWare, mas todo o processo pode ser automatizado dessa maneira usando soluções nativas.
Além disso, você pode ter diferentes arquivos de kickstart respondendo a uma solicitação específica do cliente para seu aplicativo.
Você pode usar Ganeti e Imagem da Instância Ganeti onde você pode criar uma imagem de uma VM já criada e como base para novas VMs. Demora um pouco de tempo para se acostumar com isso, mas depois que criar uma VM é um comando de distância.