Despliegue de aplicaciones con Puppet

10

Soy nuevo en Puppet y aunque he estado usando sistemas * nix durante muchos años, nunca he trabajado como administrador de sistemas o en operaciones.

Actualmente estoy escribiendo manifiestos de Puppet para alojar un conjunto de aplicaciones web (PHP / MySQL / MongoDB, código en git). Claramente, Puppet necesita tener algún conocimiento de las aplicaciones reales porque configuraré un host virtual para cada una, pero no estoy seguro de si Puppet debería administrar cosas como la implementación del código y la creación de la base de datos.

¿Es Puppet una herramienta adecuada para la implementación de aplicaciones? Si no, ¿me puede recomendar una herramienta más apropiada?

michaeltwofish
fuente
3
Si viene a esto más adelante, todas las respuestas son buenas, no solo lea la que elegí como respuesta.
michaeltwofish

Respuestas:

10

Buscaría implementaciones en Capistrano o Fabric .

Tendrá un mejor control sobre cómo se realiza la implementación con estas dos herramientas.

Miguel
fuente
Hice +1 en esta respuesta porque daba dos soluciones.
François Beausoleil
Agradezco los punteros. Tenemos a Ruby en otra parte de nuestra pila, así que miraré a Capistrano.
michaeltwofish
9

Puppet se usa para implementaciones en muchas organizaciones grandes, pero no siempre es perfecto. Gran parte depende de su metodología de implementación. ¿Está implementando en muchas máquinas a la vez? ¿Haces implementaciones continuas?

Algunas organizaciones usan Puppet creando paquetes de sus implementaciones y luego haciendo que Puppet haga cumplir la política para estar en la versión correcta de ese paquete. Debido a que Puppet incluye el concepto de entornos, puede utilizar entornos para realizar implementaciones en etapas (por ejemplo, desarrollo, prueba, producción).

Otras organizaciones usan Puppet para organizar la implementación ya sea disparando un rsync, git checkout o algunas copias recursivas de archivos usando Puppet (aunque eso es bastante lento).

También hay otras herramientas bastante buenas disponibles para la implementación. He usado Whiskey Disk en el pasado (una simple herramienta de rubí) y me gustó mucho.

(Descargo de responsabilidad, trabajo en Puppet Labs)

stahnma
fuente
Gracias. Las implementaciones se realizan en dos servidores equilibrados, que actualmente utilizan rsync manual.
michaeltwofish
4

Si desea crear un paquete a partir de su aplicación, puede buscar en FPM . El código está en GitHub .

François Beausoleil
fuente
Gracias por el consejo. No estamos creando paquetes en este caso, pero FPM parece interesante, y podemos usarlo para otras tareas.
michaeltwofish
4

Puppet no es la herramienta adecuada para implementar aplicaciones en mi opinión.

Yo uso Jenkins para construir e implementar nuestro código para probar y organizar.

Jenkins es originalmente un servidor de integración continua, pero es realmente flexible y modular. Existen muchos complementos para Jenkins que pueden ayudarlo a implementar sus aplicaciones:

Para nuestra aplicación, configuré Jenkins con Publish over SSH que copia un archivo WAR creado con éxito en el servidor de destino y luego ejecuto un script que hace la copia de seguridad y la implementación. ¡Espero que esto ayude!

pkhamre
fuente
Estamos usando Jenkins para CI, por lo que esta es definitivamente una opción interesante para explorar, gracias.
michaeltwofish
1

Puppet no está realmente diseñado para la implementación, porque cuando hay una gran cantidad de archivos involucrados, podría tener problemas. Puede buscar en capistrano para la implementación de la aplicación.

http://rubyforge.org/projects/capistrano/

johnshen64
fuente