1 de enero de 2019

Vagrant no puede encontrar la caja (box)

Puede sucedernos al cambiarnos a una nueva máquina virtual que Vagrant genere el mensaje de error: The box 'ubuntu/trusty64' could not be found or could not be accessed in the remote catalog. Veremos en este artículo como resolver este problema.

En algún momento, por motivos de necesitar una máquina virtual de Ubuntu más actualizada (con nuevas versiones de PHP) querremos migrar desde la versión hashicorp/precise64 o alguna box anterior de Vagrant.

Las distintas cajas (box) disponibles de Vagrant, las podemos buscar en: https://app.vagrantup.com/boxes/search

Y cuando cambiamos sólo una línea en el archivo de configuración de Vagrant, llamado Vagrantfile, para indicar una versión de Ubuntu, por ejemplo ubuntu/trusty64 que incluye Ubuntu Server 14.04 LTS, entonces desde la línea de comando seguiremos las siguientes acciones:

vagrant destroy

Necesario para destruir la versión actual del servidor virtual y ahora iniciemos una nueva versión con el comando:

vagrant up

Entonces obtendremos el error:

The box 'ubuntu/trusty64' could not be found or
could not be accessed in the remote catalog. If this is a private
box on HashiCorp's Atlas, please verify you're logged in via
`vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:

URL: ["https://atlas.hashicorp.com/ubuntu/trusty64"]
Error: The requested URL returned error: 404 Not Found

Origen del problema con Vagrant

¿Por qué sucede este problema?...

Lo más probable es que dispongamos de una versión de Vagrant inferior a la 2.0, así el origen del error se suscita porque Vagrant busca el box en una url incorrecta, pues se intenta buscar la caja (box) en una dirección antigua de Vagrant.

La dirección actual de Vagrant donde se localizan las cajas es: https://vagrantcloud.com. Anteriormente era: https://www.vagrantup.com.

Podemos ver la versión de Vagrant ejecutando el comando:

vagrant version

Resolviendo el problema

Entonces cómo resolvemos el problema con Vagrant, las alternativas son:

  1. Actualizar la versión de Vagrant.
  2. O modificando el archivo de configuración Vagrantfile para que incluya la nueva url.

Debido a que la segunda opción es mucho más directa, entonces modificaremos simplemente el Vagrantfile.

Originalmente el archivo tiene la siguiente estructura:

Vagrant.configure(2) do |config|
 # ...
 # ...
 # ...
end

El procedimiento sólo consite en agregarle la línea al inicio con la instrucción estableciendo la nueva url (https://vagrantcloud.com) de Vagrant. En consecuencia el archivo finalmente quedará de la forma:

Vagrant::DEFAULT_SERVER_URL.replace('https://vagrantcloud.com')
Vagrant.configure(2) do |config|
 # ...
 # ...
 # ...
end

Eso es todo, el problema está resuelto... espero les sea de utilidad!