Is it possible to version a box created/hosted entirely on my local machine using Packer without publishing it on the HashiCorp Atlas? When I do a vagrant box list
I get something like the following:
vagrant box list
Win8 (virtualbox, 0)
dummy (aws, 0)
Which shows the box version in the last column. I'd like to be able to change that number during the packing process. Their docs seem to suggest I can only get this functionality from using their Atlas:
if you want to support versioning, putting multiple providers at a single URL, pushing updates, analytics, and more, we recommend you add the box to HashiCorp's Atlas
This is possible by mimicking what Vagrant expects from the HashiCorp Atlas API. Create a JSON file including the relevant box metadata as alluded to in their API docs(here on VagrantUp and here on 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 it's required, but that is the Atlas convention I believe). Then simply 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"
Here you can find detailed description - http://sysadm.pp.ua/linux/vagrant-versioning.html In general:
Sample:
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"
Vagrant file
config.vm.box = "Ubuntu 16.04"
config.vm.box_url = "http://my-vagrant-repo.home.ua/ubuntu_16.04/ubuntu_16.04.json"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With