Desde que Martín Loy me sugirió probar Packer para crear mis propias imágenes (box) para Vagrant he descubierto una herramienta que me ha dado muchas satisfacciones.
A partir de una simple descripción en un archivo json, Packer crea una máquina virtual en múltiples plataformas, instala el sistema operativo y lo aprovisiona, para finalizar creando una imagen de dicha máquina virtual para futuros usos.
Así Packer puede crear una AMI para Amazon EC2, un snapshot para DigitalOcean, Docker, o Google Compute Engine, una imagen para OpenStack o Qemu, un OVF para Virtualbox, un VMX para VMWare o un box para Vagrant.
A partir de la ejecución un único comando
$ packer build centos-7.1.1503-x86_64.json
se obtiene una imágen pronta para re-utilizar las veces que sea necesarias.
==> Builds finished. The artifacts of successful builds are:
--> virtualbox-iso: 'virtualbox' provider box: build/centos-7.1.1503-x86_64.box
Con la ventaja de poder «perfeccionar» la descripción json y volver a generar una imágen cada vez más adecuada para las necesidades personales.
Hay que reconocer que la gente de HashiCorp tiene muy claro los conceptos de automatización.