¿Implementar nuestro propio software usando Puppet?

¿Implementar nuestro propio software usando Puppet?

(Disculpas de antemano por la estupidez de esta pregunta. Normalmente soy programador, no administrador de sistemas, pero me he encargado de automatizar algunas cosas y limpiar otras que están automatizadas pero no de la manera más bonita. . :-)

He estado buscando varias herramientas para la automatización de la implementación de software en varios servidores, como cfengine, Puppet y Chef. Hasta ahora, Puppet parece el más atractivo, pero ciertamente no me he comprometido con nada todavía.

Parece que todas estas herramientas pueden hacer un gran trabajo al mantener actualizados un montón de servidores conpreenvasadosoftware.

Lo que no entiendo es: ¿cómo se utiliza una herramienta (como Puppet) para gestionar las implementaciones de nuestro propio software interno? Creo que estoy perdido porque he visto miles de tutoriales que muestran cómo mantener Apache ensure => latest(queesbastante bueno), pero nada que corresponda del todo a mi caso de uso actual, que es algo más como:

  1. cuando un ser humano presiona el botón,
  2. extraer la rama A del repositorio de control de versiones B
  3. ejecuta el comando C para compilarlo
  4. copie los binarios D a los servidores E1 a E10
  5. en cada servidor, ejecute el comando F para que todos los cambios surtan efecto

Puppet suena genial, y veo totalmente la ventaja de la configuración declarativa e idempotente sobre algunos scripts de shell, pero no he visto ningún tutorial sobre "quieres actualizar tus scripts de shell a Puppet (o Chef, o cfengine), así que esto es lo que debes hacer". debería hacer". ¿Existe tal cosa? ¿Es obvio para otras personas cómo tomar las cosas proporcionadas en los documentos de Puppet y replicar el comportamiento que quiero? ¿Simplemente no lo entiendo?

Lo que me parece, hasta ahora, es que el ser humano (#1) empaquetaría manualmente el software (#2 y #3) externo a Puppet, actualizaría manualmente la configuración de Puppet, lo que haría que Puppet actualizara los servidores. .. ¿tal vez? (Estoy un poco confundido aquí, como estoy seguro de que puedes darte cuenta).

¡Gracias!

Respuesta1

Usamos Puppet, pero no lo usamos para las implementaciones de nuestras aplicaciones. Como dijiste, puedes empaquetar tu software en debs o rpms, configurar tu repositorio privado en todas partes y usar Puppet para controlar las versiones, pero aún estás a merced de esperar la próxima actualización de 30 minutos en todos tus servidores.

Lo que haría (y esto se acerca a lo que hacemos nosotros, pero usamos rieles, por lo que no hay ningún paso de compilación):

  • Utilice Puppet para configurar todo en el servidor excepto la aplicación misma. Dependencias, servidores web, usuarios, rutas, etc.
  • Haga que su servidor de compilación automatizado (bamboo, hudson, control de crucero, etc.) coloque los artefactos compilados en un administrador de repositorio como Nexus.
  • Utilice capistrano para enviar la compilación a sus servidores.

Chef podría tener más capacidades de inserción en tiempo real; No estoy muy familiarizado con eso.

Respuesta2

Los pasos 1 a 3 suelen automatizarse en un proceso de compilación. Normalmente, el resultado de este proceso pasará por un ciclo de prueba. Empaqueto el resultado para que pueda implementarse en un entorno de prueba de integración. Solo si se pasan las pruebas de integración se deben realizar los pasos 4 y 5.

Su paso 5 implica una interrupción de la implementación. Para algo como Apache, esto se puede manejar apagándolo y reiniciándolo durante la rotación del registro. Un script crontab puede manejar esto. Si puede manejar cambios continuos durante un período de aproximadamente una hora, simplemente incluya el reinicio en el paso 4 de implementación. Puppet o cfengine son herramientas apropiadas para el paso 4. Esto se puede activar actualizando el repositorio cuando pasen las pruebas de integración.

Respuesta3

Busque recetas de títeres y encontrará toneladas de guiones listos para producción. Sí, tendría que empaquetar manualmente el software. Si mantiene su propio repositorio personal, puede utilizar el indicador asegurar=>latest. Luego escribe una receta para decirle a Puppet que instale el software. La receta debería colocarse en el servidor maestro desde donde se propagaría a los esclavos.

información relacionada