En mi opinión hay 3 herramientas que han picado en punta en esta temática: Chef, Puppet y Ansible. Hay algunas otras (como por ejemplo CFEngine) pero toda la gente y casos que conozco utilizan alguna de las 3 mencionadas. En mi caso cuando comencé a meterme en este campo di una primera mirada a Chef, tenía por aquella época un cliente a quien yo estaba ayudando con otras cuestiones y que usaba Chef para administrar su infraestructura. A partir de ello hice algunas pruebas con Chef, pero nunca lo use en un «proyecto real».
Poco tiempo después me salió un proyecto para automatizar todo el pipeline de deployment de un aplicación incluyendo el proceso de provisioning de ambientes. Las pruebas que había hecho con Chef no me habían convencido, asi que decidí probar con Puppet. Usé Puppet durante un buen tiempo en diversos proyectos hasta que este año trabajé en un proyecto con Ale Ferrari quien venía utilizando Ansible y en mi siguiente proyecto decidí probarlo.
Hoy en día mi elección es Ansible, pero las razones las compartiré en otro post.
Hola Nicolás. No estoy seguro si es estrictamente para lo mismo, pero en esta[0] charla Nico Cohen cuenta su experiencia con Docker, el cual escucho muy seguido como muy útil para este aspecto. ¿Qué te parece Docker? No encontré que hayas hablado sobre él.
[0] http://www.youtube.com/watch?v=XSBlyMP5yG4
Hola, no considero a Docker una herramienta para automatización de provisioning, sino que lo considero una herramienta para generación de ambientes virtualizados.
Pongo dos ejemplos de tareas de automatización que pueden hacerse con las herramientas mencionadas en mi artículo y que están fuera del alcance de Docker: actualizar un paquete en un server existente y dar permisos a un usuario para acceder a un repositorio Subversión.