Estrategias de provisioning + deployment (parte 1)

En los últimos años he participado en diversos proyectos utilizando diversas estrategias de deployment. Dado que este es un tema que está despertando cada vez más interés me parece que puedo colaborar compartiendo las experiencias que he tenido.

Esta primer estrategia que quiero compartir está basada en Puppet y en paquetes Debian. Todo el provisioning del ambiente se hace utilizando Puppet y luego para el deployment se usa el siguiente proceso:

  1. Jenkins buildea la aplicación y genera un paquete Debian incluyendo la aplicación buildeada.
  2. El paquete generado se publica en un repositorio de paquetes Debian.
  3. Se actualiza el Puppet master con la definición del nuevo paquete.
  4. Se envía un mensaje a cada máquina del ambiente para que el agente Puppet actualice la máquina instalando el nuevo paquete que trae la nueva versión de la aplicación. (esto es necesario porque generalmente no se quiere una actualización automática de los agentes y por ello su actualización automática está desactivada)

Algunos puntos interesantes de esta estrategia son:

  • Es muy fácil realizar el rollback pues se hace utilizando el sistema de paquetes del sistema operativo
  • El tratar nuestra aplicación como un paquete del sistema operativo gozamos de todos los beneficios/funcionalidades que provee el sistema operativo para gestión de paquetes. Un ejemplo de esto es la posibilidad de explicar las dependencias de nuestra aplicación con otros paquetes dejando así que el propio gestor de paquetes se encargue de su resolución.
  • Si bien en mi descripción me refiero a paquetes Debian (.deb) lo mismo puede hacer con paquetes de otras distribuciones.
  • Dependiendo de cómo se armen los paquetes, se puede  incluir en los mismos los archivos de configuración  de la aplicación.

sopackages_puppet

Esta estrategia (y algunas más) la estaré compartiendo con mayor profundidad en mi Taller de prácticas de DevOps que dictaré el próximo 19 de abril.

Continuará..

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.