Typically my Vagrant workflow starts with a official base box provided by Ubuntu. With help of a Vagrant provider
vagrant 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
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.