Creating a new Vagrant base box from an existing VM
- Abhishek Tiwari
- Hacking
- 10.59350/a9nrz-v9y43
- Crossref
- December 14, 2013
Table of Contents
Typically my Vagrant workflow starts with a official base box provided by Ubuntu. With help of a Vagrant providervagrant up
will create a virtual machine (VM) using specified base box.
Then using either Puppet provisioner or apt-get
I normally install/update required packages and libraries in my VM.
Once install/update is finished, sometime I prefer to repackage updated virtual machine as a new base box to avoid repeating the install and update process. Also repackaging allows me to work offline as no provisioning is required.
First step is to get id or specific name of VM from your Vagrant provider. If you are using VirtualBox as provider you can see a list of virtual machine with their specific machine. For example following image illustrate two VM running under VirtualBox Node_default_1387087098
and Blogs_default_1386384681
Once you have specific name for VM which you want to repackage, you can run
vagrant package --base SPECIFIC_NAME_FOR_VM --output /yourfolder/OUTPUT_BOX_NAME.box
So for instance, if I am interested to repackage VM Node_default_1387087098
then I will run,
vagrant package --base Node_default_1387087098 --output /myfolder/precise64Node.box
Please note I named output box as precise64Node
as original base box is precise64
and I repackaged for Node
specific uses. It is just a personal convention.
Now you can use this new base box like any other Vagrant box.