Local version of Packer Box

Is it possible to create a box created / hosted entirely on my local machine using Packer without publishing it to HashiCorp Atlas ? When I do a vagrant box list , I get something like the following:

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

What the window shows in the last column. I would like to be able to change this number during the packaging process. Their docs seem to suggest that I can only use this functionality to use their Atlas:

if you want to support the version by putting several providers on a single URL, clicking updates, analytics, etc., we recommend that you add a field for HashiCorp Atlas

+4
source share
2 answers

This is possible by mimicking what Wagrant expects from the Atlas HashiCorp API. Create a JSON file, including the appropriate metadata in the form of a window, as indicated in their API docs ( here on VagrantUp and here in 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" } ] } ] } 

Save it as boxname.json (I don't think this is required, but this is the Atlas convention that I consider). Then just call it from you Vagrantfile as such

 # 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" 
+2
source

Here you will find a detailed description - http://sysadm.pp.ua/linux/vagrant-versioning.html In general:

  • Install web server (apache, nginx, etc.)
  • Add virtual host with JSON
  • as in the comment up
  • Download the packed box to this host
  • Add url to vagrant file in this json

Example:

  • WEB server

      "name": "virtualbox", "url": "http://my-vagrant-repo.home.ua/ubuntu_16.04/Ubuntu16.04_1.0.0.box", "checksum_type": "md5", "checksum": "72f0b69b12bdac1307efee3537ea31aa" 
  • Roaming file

    config.vm.box = "Ubuntu 16.04"

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

+1
source

All Articles