2015-08-11 3 views
4

Возможно ли создать коробку, созданную/размещенную полностью на моей локальной машине с использованием Packer, без публикации ее на HashiCorp Atlas? Когда я делаю vagrant box list я получаю что-то вроде следующего:Local Packer Box Versioning

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

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

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

ответ

2

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

{ 
    "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" 
1

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

  1. Установка веб-сервера (Apache, Nginx и т.д.)
  2. Добавить Виртуальный host with JSON
  3. file, like in up comment
  4. Загрузить упакованную коробку этому хосту
  5. Добавить URL в Бродячей файл в этом формате JSON

Пример:

  • WEB сервер

     "name": "virtualbox", 
         "url": "http://my-vagrant-repo.home.ua/ubuntu_16.04/Ubuntu16.04_1.0.0.box", 
         "checksum_type": "md5", 
         "checksum": "72f0b69b12bdac1307efee3537ea31aa" 
    
  • Vagrant файл

    config.vm.box = «Ubuntu 16.04 "

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