He estado usando VirtualBox durante muchos años para crear un entorno de desarrollo.
Muchos de mis colegas están hablando de Vagrant y muchas personas parecen muy entusiasmadas, pero parece que no puedo entender los beneficios de esto ... me parece que es una serie de nuevos comandos que aprender para hacer lo mismo. cosas que hice con Virtualbox.
Con VirtualBox, instalo y configuro un entorno perfectamente, luego puedo empaquetarlo como un OVA o lo que sea y compartirlo con otros usuarios de la oficina. Puede tomar una instantánea en VirtualBox si algo sale mal.
La marioneta y el chef no son realmente parte de Vagrant, son lo suyo, ¿verdad?
Entonces, sí, ¿qué beneficios ofrece Vagrant específicamente sobre VirtualBox por sí solo?
virtualbox
vagrant
John Hunt
fuente
fuente
Respuestas:
Esta es una gran pregunta, así que la dividiré en tres secciones.
Vagabundo
Vagrant se utiliza para configurar una o más máquinas virtuales mediante:
Tenga en cuenta que no instala software ni configura la máquina después de cargar la VM y establecer la configuración de VirtualBox. Piense en ello como un motor de secuencias de comandos para VirtualBox.
Aquí hay algunas razones que he visto para usar Vagrant solo en VirtualBox.
1. Configure redes de varias máquinas virtuales con facilidad
La mayor parte del contenido de usuario avanzado de Vagrant que he leído ha sido sobre la configuración de varias máquinas virtuales al mismo tiempo. Vagrant le proporciona un único archivo de configuración para configurarlos, lo que le permite iniciarlos todos con un solo comando.
Supongamos que ha configurado tres máquinas virtuales para conectarse en red mediante IP estáticas en la subred 192.168.1. *. Te encuentras en una ubicación que ya está usando esa subred para entregar direcciones IP, y tus máquinas virtuales ahora entran en conflicto. Con Vagrant, simplemente puede editar el archivo Vagrant y volver a cargar las máquinas virtuales, mientras que con VirtualBox tendría que abrir la configuración de cada máquina virtual, si no arrancar cada máquina virtual y cambiarlas dentro.
2. Control de fuente
Al poner la configuración en un archivo de texto, permite que la configuración se ponga bajo control de origen. ¿Hizo algunos cambios la semana pasada y accidentalmente rompió la imagen? Simplemente revierta los cambios y vuelva a cargar la VM. Puede lograr esto con las instantáneas de VirtualBox, pero ocupará mucho más espacio que solo un Vagrantfile.
3. Diversas plataformas
Hay una gran cantidad de cajas disponibles en sitios como http://vagrantbox.es . Esto le permite probar varios sistemas operativos o distribuciones, aplicando el mismo aprovisionamiento para configurar entornos similares. Esto puede ayudar a probar o agregar soporte a las nuevas plataformas, y llevaría mucho tiempo usar solo VirtualBox.
Existen muchos argumentos para usar el software de aprovisionamiento, así como también para usar instantáneas de imágenes. Para una discusión adicional, le señalaré el excelente artículo de Stephen Nelson-Smith Cómo construir 100 servidores web en un día .
fuente
vmrun
comando que ofrece VMware, incluso los cambios de dirección IP o ejecutar un script dentro de la máquina invitada.vmrun
para controlarlo. Siempre había usado VirtualBox, y por lo tanto no tengo ninguna experiencia con el backend VMWare.VboxManage
comando. virtualbox.org/manual/ch08.html Casi todo lo que mencionaste se puede crear como una secuencia de comandos al pasar la ip / parámetro específica avboxmanage controlvm
un comando similar en una secuencia de comandos de shell y luego controlar la versión. Entonces, ¿cómo sevagrant
mejoravirtualbox
?Además de la excelente respuesta dada por Adam, Vagrant une todo junto. Aunque Chef y Puppet (y los scripts de Salt y shell y cualquier otro aprovisionador que desee usar) son cosas separadas, Vagrant lo une todo y lo hace funcionar con solo un
vagrant up
.Ese único comando
No tienes que pensar en todo eso. Digamos que está cambiando a un proyecto diferente, uno iniciado por un compañero de trabajo. Simplemente verifica el código de tu repositorio y lo ejecutas
vagrant up
, sin preocuparte por descargar ISOs o instalar nada, o preguntarte qué versión de qué distribución necesitas usar para ese cliente en particular, o si tienes una copia de una VM que ya tiene todo necesitas.Ni siquiera tiene que preocuparse por si han configurado las cosas usando Chef o Puppet o solo scripts de shell. (Bien, entonces es posible que tengas que hacer
bundle install
o asegurarte de que tienes todo instalado, pero aún así no es gran cosa).Al unir todo y proporcionar una interfaz unificada para todo, puede hacer que los casos de uso, excepto los más simples, sean mucho más fáciles. Al principio, puede sentir que está volviendo a aprender una nueva forma de hacer lo que ya está haciendo, pero una vez que profundice en el uso de Vagrant descubrirá que puede hacer mucho más con mucho menos esfuerzo. Valdrá la pena la inversión de tiempo inicial.
fuente
La capacidad de integrar chef o títere con el aprovisionamiento de VM es clave. La mayoría de los usuarios de Vagrant le dirán que ejecutan 'provisión vagabunda' y ocasionalmente 'recarga vagabunda' con mucha más frecuencia que 'vagabundo' o 'destrucción vagabunda'. Estas tareas indican que el trabajo real no es girar las máquinas virtuales hacia arriba / abajo, sino 'administrarlas' después del hecho.
Para plantear una mejor pregunta (planteada por usuarios expertos de Chef, de todos modos) podría ser ¿por qué usar Vagrant y no cuchillo con el complemento apropiado (llegará al complemento virtualbox, en un momento)? Por ejemplo, pasar los valores de argumento almacenados en una bolsa de datos a un complemento de cuchillo es (de manera) más inteligente, flexible y manejable que hacer malabares con un archivo Vagrantfile gigante. Normalmente defino mis recursos 'dinámicos' como # de CPU, cantidad de memoria, qué sistema operativo implementar, nombre de host, IP, rutas, etc., en bolsas de datos de chef, de modo que no necesite seguir cambiando mi receta; ) Editar una bolsa de datos a través de la interfaz web de Chef es una tarea de entrada de datos realmente fácil que puedo dar a los operadores más jóvenes. Con Vagrantfile, su código de modificación permanente y lo creas o no, saltos de código, lo que garantiza que NO entregarás cambios simples al personal de Operaciones,
Aparte del hecho, la navaja aún no tiene un complemento para virtualbox (aunque imagino uno en un futuro no muy lejano), ya hay complementos para la mayoría de los productos de virtualización 'empresarial', incluidos vmware, xenserver y casi todas las principales 'nubes' proveedor, también. Esto significa que el cuchillo es muy superior a lo que ofrece Vagrant si está listo para ir más allá de virtualbox. Por ahora, la comunidad de Chef parece feliz de permitir que los usuarios de virtualbox cojeen junto con Vagrant al no integrar las API de virtualbox para un complemento de cuchillo. Hay un complemento de vagabundo que permite el uso de bolsas de datos para pasar argumentos. Pero, todavía requiere un software vagabundo y es un archivo vagabundo monolítico para funcionar.
Entonces, me arriesgaré y diré que Vagrant definitivamente NO es 'mejor' que Chef con cuchillo; pero necesario (por ahora) si insiste en virtualbox y quizás sea "más fácil" que administrar chef con bolsas de datos, siempre que tenga un entorno bastante simple de administrar.
fuente
Aquí hay dos casos de uso de desarrolladores más que simplifica vagabundamente (sobre VirtualBox "simple"). No vi estos casos de uso mencionados específicamente en las respuestas anteriores.
Vagrant ayuda con el objetivo de mantener las plataformas de desarrollo y producción lo más cerca posible entre sí. En un mundo ideal, aprovisionaría el entorno de producción con LOS MISMOS scripts utilizados para aprovisionar Vagrant VM, minimizando las sorpresas en el momento de la implementación.
Pruebas de integración e integración continua: Vagrant es fácil de controlar desde las pruebas y, por lo tanto, las pilas completas de máquinas múltiples se pueden controlar fácilmente desde herramientas como Jenkins cuando se realizan pruebas.
Sí, VirtualBox "simple" también se puede utilizar aquí, pero las convenciones utilizadas por vagabundo hacen que sea más sencillo configurar estos escenarios.
fuente
Vagrant abstrae máquinas virtuales para que le permita cambiar fácilmente las implementaciones de máquinas virtuales. Puede cambiar de Virtual Box a AWS o Digital Ocean. Es como usar SQL en lugar de un lenguaje de consulta específico de la base de datos.
Vagrant permite a los desarrolladores configurar su entorno rápidamente con un solo comando y es exactamente el mismo que el de los demás. Esto es importante en grandes empresas donde los desarrolladores van y vienen con frecuencia. Puede reducir el tiempo de configuración de 3 días a 1 hora.
+ Lo que dijo Adam.
(Aunque todavía no he encontrado un uso para Chef o Puppet ...)
fuente