Puppet vs Chef, pro y contra de usuarios y casos de uso [cerrado]

56

Ya busqué en Google y leí el artículo "títere-o-al-chef-esa-es-la-pregunta" .

Me interesan los casos de uso, las implementaciones del mundo real en las que la gente había elegido uno u otro en base a problemas reales.

Estoy particularmente interesado en la integración con problemas de zapatero (sé que la marioneta es un enfoque estándar en esta dirección); ¿Alguien tiene alguna experiencia en la integración de zapatero-chef ?

Gracias por adelantado

drAlberT
fuente
1
@warren: la publicación que delinees no está relacionada. Estoy pidiendo una comparación directa entre estas herramientas, no solo una mención del chef como se hizo en la publicación.
drAlberT
Para responder a la pregunta de cobbler + chef, tengo una rama en mi caja de cobbler para devolver JSON para que Chef la use, pero no tengo un sistema para probarlo. Avísame si estás interesado en las pruebas.
jtimberman
Por supuesto, pero no puedo en este momento ... Voy a continuar mis pruebas en algunos meses, algo más tiene prioridad en este momento
drAlberT
Con respecto al cierre de la pregunta ... pedí "problemas reales", integración de zapatero, casos de uso ... no simplemente "opiniones", sino elecciones motivadas. Estoy en contra del cierre, como puedes argumentar :)
drAlberT

Respuestas:

63

Para ser honesto, creo que esto se reduce a un punto de vista simple: Chef parece más una solución programática imperativa, el uso de ruby ​​como el lenguaje instantáneamente me hace esperar que alguien lo haya portado a Python, como es la forma del mundo con todo Las ideas de Ruby.

Sin embargo, eso no es lo que quieres para este tipo de cosas. Desea hablar al vacío donde estará el sistema y declarar:

"Al invocar el puerto 80 desde el norte, el demonio llamado nginx. Su tarea es servir".

"Un usuario debe existir, su nombre debe ser chiggsy y debe ser uno de los poderosos en el grupo de la rueda".

"Levanta un muro de fuego, delgado en los lugares 80,443,8080"

Y así sucesivamente, aunque quizás en un lenguaje menos florido.

Puppet apoya ese paradigma mejor de la OMI. Hubiera usado cualquiera de los dos, no tenía preferencia, pero cuando se trataba de eso, la declaración me convenía más.

Marioneta.

chiggsy
fuente
2
Incluso podría ir un paso más allá en el futuro y usar la distribución de Linux que usa la configuración declarativa: nixos.org/nixos
iElectric
19

He escrito una comparación detallada de Chef vs Puppet aquí: Puppet vs Chef: 10 razones por las que Puppet gana . Aunque no incluye casos de uso, espero que brinde algunos puntos de partida útiles para las personas que se preguntan qué herramienta elegir para la automatización de su infraestructura.

John Arundel
fuente
3
Muy buen trabajo. Incluso si muchos de los puntos que escribió están ligados al simple hecho de que Puppet es "más viejo" y mucho más "compatible". Ok, es un hecho ... pero creo que ninguno hubiera usado postfix porque sendmail ya tenía un gran público ... Repito, buen trabajo, lo tendré en cuenta
drAlberT
AlberT: sí, Puppet ha existido por más tiempo que Chef y, por lo tanto, tiene muchas de las ventajas de primer jugador: madurez de código, base de desarrollador, base instalada, mente compartida: estos se reconocen explícitamente en el artículo. ¿Puppet es técnicamente superior a las tareas de automatización de Chef para Linux? Probablemente no. Todavía recomiendo Puppet versus Chef porque es la herramienta de gestión de configuración líder del mercado.
John Arundel
2
El artículo del blog está muy desactualizado, a partir de 2011 Puppet ahora admite módulos de rubí puro, y también tiene muchos más 'verbos' que la versión que evaluó el autor.
robbyt
14

Perdón por la verbosidad. Use la herramienta que le facilita realizar su trabajo. Ese es el punto de la automatización, ¿verdad?

Historia: He usado títeres en conciertos pasados ​​y el mes pasado pasé aproximadamente una semana tratando de acostumbrarme al chef para ver si cambiaría mi nuevo concierto.

No salté.

Jerga: Un problema desafortunado con ambos sistemas es la sobrecarga de jerga. (recetas, plantillas, nodos, roles, atributos, proveedores) Sigue y sigue. Encontré que Chef dio un paso más allá. (Cuchillo, Shef, etc.)

Madurez del código: basta con decir que el chef me pareció demasiado crudo. Se parece mucho a la marioneta en el marco de tiempo de .21 / .22 hace 3-4 años. Hay mucho flujo en marcha.

Por no decir que tampoco ha sucedido en títeres. (Re-descubrí muchas características geniales en títeres que solo han aparecido en los últimos años. - ¡coincidencia de expresiones regulares!)

Ruby: No me gustó toda la sobrecarga de rubíes en Chef. (necesitas gema y rastrillo antes de comenzar) Puedes usar rubí para resolver problemas complejos en títeres a la factora, pero no tienes que hacerlo si no quieres.

Complejidad: no me gustó el enfoque de GUI en chef. Me doy cuenta de que es bonito y la marioneta tiene una interfaz web en proceso como complemento, pero creo que debería estar más desacoplada.

Chef tiene una arquitectura mucho más compleja. Puede escalar mejor, pero hay muchos puntos potenciales de falla.
http://wiki.opscode.com/display/chef/Architecture

Chef necesita couchdb, rabbitmq y solr además del servidor API y la interfaz web.

Solo quiero una interfaz simple de cliente / servidor que no necesite un marco MVC además de un complejo almacén de datos detrás.

Puppet es mucho más simple en ese departamento. (por no decir que no hay muchos complementos para hacerlo más desordenado)

Realización del trabajo: al final, fui con lo que sabía. Después de pasar una semana de pirateo lateral y apenas poder hacer lo básico con Chef, pude volver a títeres y resolver mis necesidades básicas en unas pocas horas. (gestión de paquetes, gestión de usuarios, plantillas de archivos de configuración)

Advertencia sobre los módulos: Puppet tiene un cambio reciente al uso de "módulos" que son aportados por terceros. No terminé usando estos y encontré una amplia gama en su calidad. Asegúrese de mirar debajo de las sábanas y ver qué y cómo funcionan antes de profundizar en ellas.

Joel K
fuente
5

Aquí hay una opinión: los hemos probado todos en nuestra empresa y preferimos títeres. Simplemente porque es fácil de usar.

Riaan
fuente
¿Has utilizado algún front-end para monitorear la ejecución de Puppet?
SyRenity
1
@syrenity usamos una verificación personalizada de nagios que verifica el mtime de $ puppetvardir / state / state.yaml que solo se actualiza en una ejecución exitosa.
rodjek
2
¿Es el chef tan difícil en su lugar? ¿Por qué? ¿Cuáles son las dificultades prácticas encontradas al acercarse al chef que evita la marioneta?
drAlberT
@NotNow: bueno, adopté con certeza si sería compatible con la integración de zapatero como alternativa a su propio sistema de aprovisionamiento ...
drAlberT
1

Yo mismo he visto casos en los que administrar 1000 hosts con diferentes configuraciones es mucho más fácil con Puppet. De hecho, compañías como Google usan títeres para su despliegue.

La arquitectura de diseño principal de la marioneta es tal que funciona mucho mejor que otras si la configura de la manera correcta. Por ejemplo, agregar sus datos personalizados para sus configuraciones personalizadas, etc., los enlaces a continuación pueden proporcionar información http://slashroot.in/puppet-tutorial-installing-puppet-master-and-puppet-agent

http://slashroot.in/puppet-tutorial-how-does-puppet-work

sarath
fuente
0

Esto puede haber cambiado desde la última vez que lo probé, pero cuando estaba probando chef en RHEL no había una forma clara de instalarlo. Alguien había creado un repositorio yum que tenía todos los paquetes necesarios, pero terminó instalando 200 paquetes impares. Puppet, por otro lado, tiene un solo rpm (y un par de dependencias).

Tallarines
fuente