Desde Vagrant 1.5, las cajas admiten el control de versiones. Esto permite a las personas que hacen cajas enviar actualizaciones a la caja, y las personas que usan la caja tienen un flujo de trabajo simple para buscar actualizaciones, actualizar sus cajas y ver qué ha cambiado.

Si recién está comenzando con Vagrant, el control de versiones de la caja no es demasiado importante y le recomendamos que primero aprenda sobre otros temas. Pero si está utilizando Vagrant en un equipo o planea crear sus propias cajas, el control de versiones es muy importante. Afortunadamente, tener el control de versiones integrado en Vagrant hace que sea fácil de usar y se adapte perfectamente al flujo de trabajo de Vagrant.

Esta página cubrirá cómo usar cajas versionadas. Lo hace no cubra cómo actualizar sus propias cajas personalizadas con versiones. Eso está cubierto en la creación de una caja base.

Visualización de versiones y actualización

vagrant box list solo muestra instalado versiones de cajas. Si desea ver todas las versiones disponibles de un cuadro, deberá buscar el cuadro en Nube vagabunda de HashiCorp. Una forma sencilla de encontrar un cuadro es utilizar la URL https://vagrantcloud.com/$USER/$BOX. Por ejemplo, para el hashicorp/precise64 cuadro, puede encontrar información al respecto en https://vagrantcloud.com/hashicorp/precise64.

Puede comprobar si la casilla que está utilizando está desactualizada con vagrant box outdated. Esto puede verificar si la caja en su entorno Vagrant actual está desactualizada, así como cualquier otra caja instalada en el sistema.

Finalmente, puede actualizar cajas con vagrant box update. Esto descargará e instalará la nueva caja. Esta no Actualice mágicamente los entornos Vagrant en ejecución. Si ya se está ejecutando un entorno Vagrant, tendrá que destruirlo y volver a crearlo para adquirir las nuevas actualizaciones en el cuadro. El comando de actualización simplemente descarga estas actualizaciones localmente.

Restricciones de versión

Puede restringir un entorno Vagrant a una versión o versiones específicas de una caja usando Vagrantfile especificando el config.vm.box_version opción.

Si no se especifica esta opción, siempre se utiliza la última versión. Esto equivale a especificar una restricción de “> = 0”.

La configuración de la versión de caja puede ser una versión específica o una restricción de versiones. Las restricciones pueden ser cualquier combinación de las siguientes: = X, > X, < X, >= X, <= X, ~> X. Puede combinar varias restricciones separándolas con comas. Todas las restricciones deben explicarse por sí mismas, excepto quizás ~>, conocida como la “restricción pesimista”. Los ejemplos lo explican mejor: ~> 1.0 es equivalente a >= 1.0, < 2.0. Y ~> 1.1.5 es equivalente a >= 1.1.5, < 1.2.0.

Puede elegir manejar las versiones como mejor le parezca. Sin embargo, muchos recuadros del catálogo público siguen control de versiones semántico. Básicamente, solo el primer número (la “versión principal”) rompe la compatibilidad con versiones anteriores. En términos de cajas Vagrant, esto significa que cualquier software que se ejecute en la versión “1.1.5” de una caja debería funcionar en “1.2” y “1.4.5” y así sucesivamente, pero “2.0” podría introducir grandes cambios que rompan su software. Siguiendo esta convención, la mejor restricción es ~> 1.0 porque sabe que es seguro, independientemente de la versión que se encuentre en ese rango.

Tenga en cuenta que, si bien la especificación de versiones semánticas permite más de tres puntos y versiones preliminares o beta, las cajas de Vagrant deben tener el formato X.Y.Z dónde X, Y, y Z son todos enteros positivos.

Comprobación automática de actualizaciones

Con Vagrantfile, también puede configurar Vagrant para que busque actualizaciones automáticamente durante cualquier vagrant up. Esto está habilitado de forma predeterminada, pero se puede deshabilitar fácilmente con config.vm.box_check_update = false en su Vagrantfile.

Cuando esto está habilitado, Vagrant buscará actualizaciones en cada vagrant up, no solo cuando la máquina se está creando desde cero, sino también cuando se está reanudando, iniciando después de haber sido detenida, etc.

Si se encuentra una actualización, Vagrant emitirá una advertencia al usuario para informarle que hay una actualización disponible. Ese usuario puede optar por ignorar la advertencia por ahora, o puede actualizar el cuadro ejecutando vagrant box update.

Vagrant no puede descargar y no descarga automáticamente la caja actualizada y actualiza la máquina porque las cajas pueden ser relativamente grandes y actualizar la máquina requiere destruirla y recrearla, lo que puede causar la pérdida de datos importantes. Por lo tanto, este proceso es manual en la medida en que el usuario tiene que ingresar manualmente un comando para hacerlo.

Poda de versiones antiguas

Vagrant no elimina automáticamente las versiones antiguas porque no sabe si podrían estar en uso en otros entornos de Vagrant. Debido a que las cajas pueden ser grandes, es posible que desee podarlas activamente de vez en cuando usando vagrant box remove. Puedes ver todas las cajas que están instaladas usando vagrant box list.

Otra opción es usar vagrant box prune comando para eliminar todas las cajas instaladas que están desactualizadas y no están en uso actualmente.