Aquí hay varias categorías de herramienta. Algunas personas usan una combinación de herramientas de estas categorías. A veces uso, por ejemplo, tanto Puppet como Capistrano. Ver Puppet or Capistrano - Use the Right Tool for the Job para una discusión.
Herramientas de scripting destinadas a implementar una aplicación:
El patrón general con las herramientas de esta categoría es que se crea una secuencia de comandos y/o el archivo de configuración, a menudo con conjuntos de comandos similares a un Makefile, y el la herramienta irá a su caja de producción, hará un checkout de su fuente y ejecutará cualquier otro paso que sea necesario.
Las herramientas en esta área generalmente tienen instalaciones para retroceder a una versión anterior. Por lo tanto, verifican su fuente a releases/directorio y crean un enlace simbólico de "actual" a "releases /" si todo va bien. Si hay un problema, puede volver a la versión anterior ejecutando un comando que eliminará "actual" y lo vinculará a las versiones/directorio anteriores.
- Capistrano viene de la comunidad de Rails pero es de uso general. Los usuarios de Capistrano pueden estar interesados en deprec, un conjunto de recetas de implementación para Capistrano.
- Vlad the Deployer es una alternativa a Capistrano, nuevamente de la comunidad de Rails.
- Escriba su propio script de shell o Makefile.
opciones para llegar a los archivos en el cuadro de la producción:
- pago y envío directo de la fuente. No siempre es posible si sus cajas de producción carecen de herramientas de desarrollo, específicamente herramientas de administración de código fuente.
- Verifique la fuente localmente, luego arréglelo. Use scp o rsync para copiar el archivo tar. Esto a veces se prefiere para algo como una implementación de Amazon EC2, donde un tarball comprimido puede ahorrar tiempo/ancho de banda.
- Verifique la fuente localmente, luego rsyncírela a la caja de producción.
Herramientas de embalaje
Use sistema de paquetes de su sistema operativo para generar paquetes que contienen los archivos para su aplicación. Cree un paquete maestro que tenga como dependencias los otros paquetes que necesita. El sistema RubyWorks es un ejemplo de esto, utilizado para implementar una pila de Rails y una aplicación de muestra. Luego, se trata de usar apt, yum/rpm, Windows msi o lo que sea para implementar una versión determinada. La reversión implica la desinstalación y reinstalación de una versión anterior.
Herramientas generales destinadas a la instalación de aplicaciones/configs y mantenimiento de un conjunto de sistemas
Estas herramientas no se dirigen específicamente al problema de la implementación de una aplicación web, sino más bien el problema más general de la implementación/mantenimiento de Aplicaciones/Configura para un conjunto de servidores o estaciones de trabajo de una compañía completa. Están destinados más al administrador del sistema que al desarrollador web, aunque pueden ser útiles.
- Cfengine es una herramienta en esta categoría.
- Puppet tiene como objetivo mejorar Cfengine. Tiene una curva de aprendizaje, pero muchos encuentran que vale la pena el tiempo para descubrir cómo hacer las configuraciones. Una vez que lo tienes listo, cada casilla revisa periódicamente el servidor central y se asegura de que todo esté actualizado. Si alguien edita un archivo o cambia un permiso, esto se detecta y se corrige.Por lo tanto, a diferencia de las herramientas de implementación anteriores, Puppet no solo coloca los archivos en el lugar correcto para usted, sino que asegura que se mantengan de esa manera.
- Chef es un poco más joven que Puppet con un enfoque similar.
- Smartfrog es otra herramienta en esta categoría.
- Ansible trabaja con archivos YAML simple y no requiere de agentes que se ejecutan en los servidores que gestiona
Para una comparación de estas y muchas otras herramientas en esta categoría, ver el artículo de Wikipedia, Comparison of open source configuration management software.
Wow 7 años después ... Ahora hay un montón de herramientas, específicamente herramientas de automatización de lanzamiento de aplicaciones. Aquí hay un gran recurso de inicio para obtener más información: https://en.wikipedia.org/wiki/Application_release_automation –