Управление версиями Local Packer Box

Можно ли создать версию ящика, полностью созданного/размещенного на моем локальном компьютере, с помощью Packer, не публикуя его в Атласе HashiCorp ? Когда я делаю vagrant box list, я получаю что-то вроде следующего:

vagrant box list
Win8        (virtualbox, 0)
dummy       (aws, 0)

Что показывает коробочную версию в последнем столбце. Я хотел бы иметь возможность изменить этот номер в процессе упаковки. Их документы, похоже, предполагают, что я могу получить эту функциональность только с помощью их Атласа:

если вы хотите поддерживать управление версиями, размещение нескольких поставщиков по одному URL-адресу, отправку обновлений, аналитику и т. д., мы рекомендуем вам добавить поле в Атлас HashiCorp.


person Joel B    schedule 11.08.2015    source источник


Ответы (2)


Это возможно, имитируя то, что Vagrant ожидает от HashiCorp Atlas API. Создайте файл JSON, включая соответствующие метаданные блока, как указано в их документации по API (здесь на VagrantUp и здесь на Atlas):

{
  "description": "A long description of your box.",
  "short_description":"Short description",
  "name": "yourname/boxname",
  "versions": [
    {
      "version": "1.0.0",
      "status":"revoked",
      "description_html":null,
      "description_markdown":null,
      "created_at" : "2015-08-13T07:39:00.000Z",
      "updated_at" : "2015-08-13T07:39:00.000Z",
      "providers": [
        {
          "checksum": "foo",
          "checksum_type": "md5",
          "name": "virtualbox",
          "url": "file:////192.168.1.1/Vagrant/ubuntu-14-04-x64-virtualbox-1.0.0.box"
        }
      ]
    },
    {
      "version": "1.1.0",
      "status":"active",
      "description_html":null,
      "description_markdown":null,
      "created_at" : "2015-08-15T19:05:00.000Z",
      "updated_at" : "2015-08-15T19:05:00.000Z",
      "providers": [
        {
          "checksum": "bar",
          "checksum_type": "md5",
          "name": "virtualbox",
          "url": "file:////192.168.1.1/Vagrant/ubuntu-14-04-x64-virtualbox-1.1.0.box"
        }
      ]
    }
  ]
}

Сохраните его как boxname.json (я не думаю, что это обязательно, но я считаю, что это соглашение Атласа). Затем просто назовите его от себя Vagrantfile как таковой

# Enable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
config.vm.box_check_update = true

# The path to the box metadata file
config.vm.box = "yourname/boxname"
config.vm.box_url = "file://./boxname.json"
person Joel B    schedule 16.08.2015

Здесь вы можете найти подробное описание - http://sysadm.pp.ua/linux/vagrant-versioning.html В целом:

  1. Установить веб-сервер (apache, nginx и т. д.)
  2. Добавить виртуальный хост с JSON
  3. файл, как в восходящем комментарии
  4. Загрузить упакованную коробку на этот хост
  5. Добавить URL-адрес в файл Vagrant в этот JSON

Образец:

  • Веб сервер

            "name": "virtualbox",
            "url": "http://my-vagrant-repo.home.ua/ubuntu_16.04/Ubuntu16.04_1.0.0.box",
            "checksum_type": "md5",
            "checksum": "72f0b69b12bdac1307efee3537ea31aa"
    
  • Бродячий файл

    config.vm.box = "Убунту 16.04"

    config.vm.box_url = "http://my-vagrant-repo.home.ua/ubuntu_16.04/ubuntu_16.04.json"

person alex    schedule 14.10.2016