Todas las herramientas que ha mencionado (Jenkins, ant, git) ayudan a construir y probar su artefacto. En el mundo de Java, por lo general, esto puede ser guerra, oído o simplemente zip con la aplicación dentro. A veces, para aplicaciones complicadas, puede ser más de un artefacto. Para otras plataformas de programación puede variar, DLL, binarios para múltiples plataformas diferentes, etc.
Ahora supongamos que desea implementar su aplicación. Si tiene un servidor, puede hacerlo manualmente o con algún script de cosecha propia. Hasta aquí todo bien :)
Pero, ¿qué sucede si tiene muchas granjas (grupos de máquinas), diferentes granjas deben tener implementaciones con diferentes configuraciones (bases de datos, diferentes ubicaciones geográficas) ¿Qué sucede si su aplicación puede escalar horizontalmente de modo que agregar un par de nuevos nodos a la granja debería ser Una tarea trivial. Su equipo de control de calidad puede solicitar un nuevo entorno para ejecutar sus pruebas, su equipo de rendimiento puede solicitar un nuevo entorno o agregar nodos a la granja para ejecutar pruebas de estrés, etc. Ahora administrar todo esto parece ser complicado. Ahí es donde entran en juego herramientas como ansible, chef, sal, marionetas y otras.
En realidad, están ayudando a automatizar la implementación. Pueden proporcionar recetas de implementación, instalar dependencias faltantes (para ejecutar su proyecto puede requerir jre, tomcat de una versión específica y nginx para contenido estático). Todo esto a nivel de granja.
Sé que la respuesta es demasiado genérica y puede parecer menos obvia para el desarrollador de Java (soy uno de esos). Pero si tiene un equipo de muchachos de sistemas / desarrolladores, deben señalar inmediatamente los beneficios de estas herramientas.