0053 — Образы Vagrant

Содержимое страницы

Проблема

С некоторых пор Vagrant не даёт напрямую использовать образы, размещённые на хабе Vagrantup.

Допустим, мы хотим использовать образ Debian Bookworm.

Раньше инструкция выглядела так:

  1. Создайте в любом каталоге файл Vagrantfile со следующим содержимым:

    # frozen_string_literal: true
    
    Vagrant.configure('2') do |config|
      config.vm.box = 'debian/bookworm64'
    end
    
  2. Выполните команду:

    vagrant up
    

Однако, времена изменились. И хотя вы всё ещё можете свободно просматривать образы на указанном выше сайте, приведённая выше инструкция работать не будет, а будет выдавать ошибку:

==> default: Box 'debian/bookworm64' could not be found. Attempting to find and install...
    default: Box Provider: virtualbox
    default: Box Version: >= 0
The box 'debian/bookworm64' could not be found or
could not be accessed in the remote catalog. If this is a private
box on HashiCorp's Vagrant Cloud, 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://vagrantcloud.com/debian/bookworm64"]
Error: The requested URL returned error: 404

Решения

Использование VPN

Если у вас есть быстрый безлимитный VPN с не-российским IP-адресом, то никакой проблемы у вас нет.

Использование зеркала

Если у вас есть зеркало, которому вы доверяете, используйте его. Для этого в начало Vagrantfile добавьте строку:

ENV['VAGRANT_SERVER_URL'] = 'https://example.com/'

Ручная загрузка образа

Если зеркала у вас нет, или вы ему не доверяете, придётся всё сделать вручную:

  1. Перейдите на страницу образа на сайте Vagrantup.

  2. В разделе с описанием образа найдите ссылку на загрузку для нужной системы виртуализации.

  3. Загрузите образ по ссылке, например:

    wget https://app.vagrantup.com/debian/boxes/bookworm64/versions/12.20240814.1/providers/virtualbox/unknown/vagrant.box \
        -O debian-bookworm64.box
    
  4. Добавьте образ в каталог образов:

    vagrant box add debian/bookworm64 ./debian-bookworm64.box
    

    Здесь:

    • debian/bookworm64 — название образа. Его нужно использовать в Vagrantfile в строке с настройкой параметра config.vm.box.
    • debian-bookworm64.box — имя файла образа, загруженного ранее.

Недостаток метода — за обновлениями образа придётся следить самостоятельно.