Окно добавления к бродячим


Я создал новую коробку для использования с поставщиком Hyper-V. Когда я пытаюсь добавить коробку, она умирает со следующим:

PS C:> vagrant box add sbx-misc-app01 .img-misc-w2k16.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'sbx-misc-app01' (v0) for provider:
    box: Unpacking necessary files from: file://C:/img-misc-w2k16.box
    box:
C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/box_collection.rb:156:in `block (3 levels) in add': undefined method `to_sym' for nil:NilClass (NoMethodError)
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/box_collection.rb:461:in `with_temp_dir'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/box_collection.rb:134:in `block (2 levels) in add'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/box_collection.rb:461:in `with_temp_dir'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/box_collection.rb:115:in `block inadd' from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/box_collection.rb:448:in `block in with_collection_lock'
        from C:/HashiCorp/Vagrant/embedded/mingw64/lib/ruby/2.4.0/monitor.rb:214:in `mon_synchronize'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/box_collection.rb:447:in `with_collection_lock'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/box_collection.rb:104:in `add'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/action/builtin/box_add.rb:357:in `box_add'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/action/builtin/box_add.rb:146:in `add_direct'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/action/builtin/box_add.rb:120:in `call'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/action/warden.rb:34:in `call'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/action/builder.rb:116:in `call'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/action/runner.rb:66:in `block in run'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/util/busy.rb:19:in `busy'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/action/runner.rb:66:in `run'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/plugins/commands/box/command/add.rb:78:in `execute'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/plugins/commands/box/command/root.rb:66:in `execute'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/cli.rb:46:in `execute'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/lib/vagrant/environment.rb:269:in `cli'
        from C:/HashiCorp/Vagrant/embedded/gems/2.0.3/gems/vagrant-2.0.3/bin/vagrant:151:in `<main>'

Вопросы:

  1. есть ли ссылка на файл метаданных? Я уже искал. Я уверена, что он у меня перед носом, но не могу его найти.
  2. Почему я получаю сообщение " box: файл Box не был обнаружен как метаданные.- что? У меня есть метаданные.файл json в моем архиве.
  3. WTF имеет "неопределенный метод 'to_sym'" ошибка?

Окружающая среда...

  • гипервизор ОС: Microsoft Windows 10 Enterprise (10.0.15063)
  • Гостевая ОС: Windows Server 2016 Standard (64-разрядная версия)
  • Поставщик: Hyper-V Vagrant 2.0.3
  • box архив, созданный с помощью tar в Bash на Ubuntu на Windows
  • окно добавлено из окна Powershell

Содержимое коробки...

C:img-misc-w2k16Virtual Жесткие Диски
C:img-misc-w2k16Virtual Машины
C:img-misc-w2k16metadata.json
C:img-misc-w2k16Virtual жесткие дискиimg-misc-w2k16.vhdx
C:img-misc-w2k16Virtual машиныAB56D8F5-4F71-4CCD-97E6-237713B79FD8.... C:img-misc-w2k16Virtual машиныAB56D8F5-4F71-4CCD-97E6-237713B79FD8....

Содержание метаданных.формат JSON...

{
    "name": "foo/windowsServer2016x64",
    "description": "This box contains Windows Server 2016 64-bit standard edition.",
    "versions": [
      {
        "version": "1.0.0",
        "providers": [
          {
            "name": "hyperv"
          }
        ]
      }
    ]
  }
1 2

1 ответ:

Похоже, существует некоторая путаница в отношении различных аспектов коробки.

Итак, беря из https://www.vagrantup.com/docs/boxes/format.html

Box File - это сжатый (tar, tar.GZ, zip) файл, который является специфичен для одного поставщика и может содержать все, что угодно. Бродячий сердечник никогда не использует содержимое этого файла. Вместо этого они передаются к поставщику услуг. Таким образом, файл VirtualBox box имеет различные содержимое из файла коробки VMware и так далее на.

Метаданные каталога ящиков - это документ JSON (обычно обмениваемый во время взаимодействий с бродячим облаком HashiCorp), что определяет название коробки, описание, доступные версии, доступные поставщиков, адресов фактического коробки для картотек (далее компонента) для каждого поставщик и версия. Если эти метаданные каталога не существуют, то поле файл все еще можно добавить напрямую, но он не будет поддерживать управление версиями и обновление.

Файл C:\img-misc-w2k16\metadata.json является частью файл box-он отличается от метаданных каталога box (используется, если вы хотите распространять свой box), но содержимое, которое вы совместно используете, является метаданными каталога box.

Читать дальше

В архиве Vagrant ожидает один файл: метаданные.формат JSON. это файл JSON, который совершенно не связан с указанным выше ящиком. компонент метаданных каталога; есть только один метаданных.json в коробке файл (внутри файла коробки), тогда как один каталог метаданных JSON документ может описывать несколько версий одной и той же коробки, потенциально охватывая несколько поставщиков.

Метаданные.json должен содержать по крайней мере ключ "provider" с ключом поставщик, для которого предназначена коробка. Бродяга использует это, чтобы проверить поставщика коробка. Например, если ваш ящик был для VirtualBox, то метаданные.json будет выглядеть так:

{ "provider": "virtualbox" }

Если нет метаданных.файл json или файл не содержит допустимый JSON, по крайней мере "поставщика" ключ, тогда Бродяга будет ошибаться при добавлении коробки, потому что он не может проверить поставщик.

Итак, когда вы упаковываете свою коробку, содержимое метаданных.json должен быть как

{
  "provider": "hyperv"
}

Как только вы замените содержимое файла, вы можете переупаковать коробку, и вы должны быть в состоянии запустить виртуальную машину из этой коробки.