Elegir un provisioner vagabundo


Pregunta

¿Puede alguien explicar por qué sería mejor elegir los provisioners puppet o chef vagrant, en lugar del provisioner shell?

Antecedentes

Estoy en el proceso de empezar con Vagrant. Una de las cosas con las que estoy teniendo problemas es decidir qué suministrador usar. Hasta ahora, he tenido cierto éxito usando el aprovisionador de shell, pero ha sido más trabajo del que esperaba para que se ejecute de manera confiable.

En este momento, No soy familiar de Ruby, puppet o chef, pero estoy feliz de aprender alguno o todos ellos si tengo que hacerlo. Mi primera experiencia jugando con puppet y chef es que si alguien más tiene una receta que hace exactamente lo que quieres, funciona muy bien, pero hacer algo no estándar significa volver a codificar la solución en ruby.

Estoy al tanto de los artículos que comparan puppet y chef , y estoy menos preocupado por cuál de ellos usar, en lugar de saber cuándo y por qué debo usarlos en todo.

Author: Andrew Walker, 2011-10-13

3 answers

Revelación completa: Soy un empleado de Puppet Labs. Pero elegí Puppet como producto durante 2 años antes de unirme a ellos.

Le recomendaría que use Puppet o Chef sobre shell si sus configuraciones van a a) tener algún grado de complejidad y b) van a cambiar con el tiempo, o si espera que su entorno de instalación cambie de una manera que pueda alterar la forma en que se realiza su implementación. Sus guiones pueden ser muy buenos, pero en última instancia, a menos que esté siguiendo excelente prácticas de programación alrededor de ellos, pruebas y QA'ing ellos, etc que van a fallar en algún momento.

Hay todo un cuerpo de alfabetizados alrededor de DevOps discutiendo esta noción, pero se reduce al principio de "deuda técnica": tendemos a hacer las cosas de la manera fácil ahora, y por lo tanto las percibimos como más simples, a costa de aumentar la complejidad y la dificultad más adelante.

Uno de los puntos fuertes de Puppet es su naturaleza determinista: el manifiesto que escribes debe poder ser transformada programáticamente por Puppet en un modelo del servidor que está construyendo. Esto es percibido por la gente como más "difícil", pero yo diría que la dificultad se reduce si se promedia a lo largo de la curva del ciclo de vida de su tecnología. En otras palabras, Puppet te obliga a pensar ahora, pero luego desplázate a escala con facilidad, en lugar de pensar más tarde y reingenierarte a medida que avanzas. Pague en efectivo ahora, en lugar de a crédito, con intereses, más tarde.

Si eres simplemente tirando abajo de los manifiestos de otras personas, te vas a topar con problemas en algún momento-aunque nos gustaría que no fuera así, trabajar con Puppet hoy es ciertamente el caso, porque ellos los están escribiendo para abordar el caso general, y no tu sistema particular. Muchos manifiestos de propósito general se vuelven útiles solo cuando alcanzas una mejor comprensión de Títere.

Así que en lugar de comenzar allí, me abriría camino a través de la excelente Marioneta de aprendizaje guía para comenzar para comprender lo básico. La curva de aprendizaje de Puppet es empinada, pero se nivela después de un corto tiempo.

Hay otras razones para usar otros provisioners o herramientas, pero seguramente argumentaría que eres mejor con Puppet o Chef que intentar asegurarte de que tus scripts de shell están haciendo exactamente lo que crees que deben hacer, durante el tiempo que necesites generar nuevos entornos.

 27
Author: eshamow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-21 04:50:16

Ah, con la libertad de elección viene la complicación de elegir lo que es correcto para usted.

Chef Solo - Chef solo es ideal si recién está comenzando con chef o un servidor de chef es simplemente demasiado pesado para su situación. Chef solo le permite incrustar todos sus libros de cocina dentro de su proyecto, lo cual es bueno para los proyectos que desean realizar un seguimiento de sus libros de cocina dentro del mismo repositorio. Chef solo se ejecuta de forma independiente – no requiere ningún servidor chef ni ningún otro servidor con el que hablar; simplemente se ejecuta por sí mismo en la máquina virtual.

Chef Server - Chef server es útil para empresas o individuos que administran muchos proyectos, ya que le permite compartir libros de cocina en varios proyectos. Los libros de cocina en sí se almacenan en el servidor, y el cliente descarga los libros de cocina al ejecutarse.

Puppet: El provisionador de Puppet ejecuta manifiestos de Puppet independientes que se almacenan en el servidor y se descargan en la máquina virtual cliente cuando crear. El provisioner no requiere un servidor Puppet y se ejecuta en la propia máquina virtual.

Puppet Server: El provisionador del servidor Puppet se conecta a un servidor Puppet y configura su máquina virtual cliente mediante la configuración de nodos en ese servidor.

Otras herramientas, scripts de shell, etc. - ¿Usas algo más que lo que está integrado en Vagrant? Los Provisioners son simplemente subclases de Vagrant:: Provisioners:: Base, lo que significa que puede construir fácilmente el suyo propio, surgir.

También puede consultar la documentación, docs.vagrantup.com/v2

 10
Author: Noah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-29 16:20:51

Elegiría el aprovisionador de Shell, luego dejaría que el script de shell clone su repositorio puppet/chef desde github o bitbucket. El script puede configurar una clave ssh para permitir la clonación automática de git. Los beneficios son que la mayoría de los proveedores de nube también admiten esto para que pueda usar el mismo script.Este blog se explica git, marioneta y vagabundo bien, un hombre y la nube blog

 4
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-29 15:12:00