Detrás de mi respuesta a la pregunta: ¿Cómo puede ayudar DevOps a mejorar los procedimientos de depósito de garantía de software? Tensibai tenía la pregunta:
¿Qué necesitaría Capistrano sobre una marioneta o un chef?
Mi respuesta fue publicar un enlace al artículo de Noah Gibbs "¿Necesitamos tanto a Capistrano como a Chef?" . Personalmente, todavía me suscribo a la opinión de Noah de que es más apropiado:
- use una herramienta de implementación especializada como Capistrano para las implementaciones.
- use una herramienta de administración de configuración especializada como Chef para la administración de la configuración.
El enfoque fundamental que utiliza cada tipo de herramienta para completar su tarea es muy diferente:
Las herramientas de administración de configuración : se trata de crear y mantener el estado deseado de un sistema, son inherentemente idempotentes por naturaleza. Ejemplos de herramientas de administración de configuración son Chef , Puppet , Ansible , PowerShell DSC , Salt Stack .
Herramientas de implementación : se trata de entregar versiones de software en un entorno de alojamiento, proporcionan funcionalidad para mantener múltiples versiones del software en varias máquinas y administrar qué versión es "actual", son de naturaleza inherentemente imperativa. Ejemplos de herramientas de implementación son Capistrano , Octopus Deploy , Deployer y Command.io .
Creo que las herramientas de administración de configuración pueden hacer el trabajo de las herramientas de implementación y, en el caso de la infraestructura inmutable , son la herramienta más adecuada para el trabajo, ya que no es necesario mantener las versiones de software en el destino.
Pregunta: ¿Han madurado las herramientas de gestión de configuración como Chef, Ansible y Puppet hasta el punto de que son capaces de cumplir tanto los modelos idempotentes como los imperativos?