with the run provisioned provision machine already shell chef vagrant puppet provisioning

the - Vagrant provisioning shell vs puppet vs chef



vagrant reload--provision (2)

Tengo la siguiente configuración:

  • Muchos proyectos diferentes que son repositorios git separados, pero todos tienen principalmente la misma configuración de servidor
  • Cada proyecto a su vez depende de muchos otros proyectos y usamos el administrador de dependencias del compositor para unirlos (el lenguaje PHP aquí).

Quiero usar Vagrant e incluir un archivo Vagrant en cada repositorio, para que los miembros de mi equipo puedan clonar un repositorio, ejecutar vagrant up y estar listo para funcionar.

Mi pregunta ahora está dirigida hacia el aprovisionamiento. Necesito instalar varias herramientas y paquetes como apache, git, mysql y varios paquetes de php, luego descargar algunos archivos (como un volcado de db de desarrollo reciente), configurar todo en / var / www y ejecutar el comando de instalación del compositor.

Entonces, una opción para hacer esto es usar un administrador usando recetas como chef o marioneta. La alternativa sería escribir un archivo bash y usar el aprovisionamiento de shell.

No tengo mucha experiencia con chef / puppet, por lo que, naturalmente, parece más fácil usar la opción de shell, pero quiero entender si esta no es una buena opción viable a largo plazo.

¿Por qué para mí parece un mal enfoque para ir con puppet / chef?

Entiendo que tendré que usar varias recetas diferentes y casi siempre usaré las mismas recetas para mis diferentes repositorios, así que tendría que incluirlas todas en los repositorios. Considere tener 20 repositorios y la necesidad de 10 recetas, eso significa que tendré que agregar 200 recetas como un submódulo git o similar (también cada miembro del equipo necesita clonar el repositorio, luego clonar 10 repositorios de recetas y solo luego ejecutar vagabundo para cada proyecto). En contraste, solo necesitaría tener un pequeño repositorio con mi script de shell y clonarlo 20 veces.

Probablemente me esté perdiendo algo, por lo que le aconsejo si debería optar por chef / puppet y por qué tiene sentido, incluso si mis repositorios tienen una configuración de servidor muy similar.


El siguiente artículo se refiere a otra herramienta de CM ( ansible ), pero creo que el autor hace un excelente trabajo al explicar los beneficios de la transición de las secuencias de comandos de shell.

http://devopsu.com/blog/ansible-vs-shell-scripts/

cita 1:

Lo que realmente me sorprendió fue la respuesta de algunos de estos desarrolladores más famosos. Básicamente dijeron: "Esto es genial, pero probablemente no lo lea, ya que mi flujo de trabajo de instalación manual / script de shell está bien por ahora".

Estaba un poco sorprendido, pero una vez que lo pensé durante unos minutos, me di cuenta de que su elección era perfectamente sensata y racional, dado lo que sabían sobre las herramientas CM.

cita 2:

Para ellos, usar una herramienta CM significó semanas de esfuerzo para aprender conceptos complejos, luchar con un complejo proceso de instalación y mantener ese complejo sistema a lo largo del tiempo. Eran algo conscientes de los beneficios, pero los costos de usar una herramienta CM parecían demasiado altos para que valiera la pena el esfuerzo.

Los beneficios sobre los scripts de shell se resumen al final y creo que se aplican a todas las herramientas de CM, marionetas, chef, sal, ansible ...

  • ¿Qué método es más probable que termine en el control de la fuente?
  • ¿Qué método se puede ejecutar varias veces de forma segura con confianza?
  • ¿Qué método se puede ejecutar fácilmente contra múltiples servidores?
  • ¿Qué método realmente verifica (prueba) que tu servidor sea correcto?
  • ¿Qué método puede apuntar a ciertos servidores fácilmente (web, db, etc.)?
  • ¿Qué método es compatible con la plantilla de tus archivos de configuración?
  • ¿Qué método crecerá para soportar fácilmente toda tu pila?

Espero que esto ayude.


Actualizado 2016

Para aquellos que encontraron esto a través de Google, parece que un grupo de desarrolladores se están moviendo hacia Ansible por la simplicidad. Desde la publicación:

"Ansible es la herramienta de implementación para las personas a las que no les gustan las herramientas de implementación. Está cerca de las secuencias de comandos, no contamina sus servidores con agentes o servidores centralizados, y simplemente tiene sentido inmediato".

Lo implementamos recientemente en nuestra arquitectura de microservicio y ha sido increíble.

  • Súper simple
  • Tomó aproximadamente un día para recoger
  • Realmente no necesitas pensar sobre eso una vez que estás listo

El títere / chef siempre tiene un lugar en mi corazón / pila, pero Ansible es simplemente más fácil.