Skip to content

Instantly share code, notes, and snippets.

@kekru
Last active July 19, 2023 05:58
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save kekru/a76ba9d0592ce198f09f6ba0cefa5afb to your computer and use it in GitHub Desktop.
Save kekru/a76ba9d0592ce198f09f6ba0cefa5afb to your computer and use it in GitHub Desktop.
Vagrant: Create local box

Create box

This is how to install something in a VM and export it as a Vagrant box and use it locally.

First copy the Vagrantfile from below and change the box to the box you want as a base.

Run vagrant up to create the Virtual Machine and vagrant ssh to login.
On Windows you might have to put ssh.exe to your %PATH%. If you have installed git, you can use C:\Program Files\Git\usr\bin You can also login via Putty on host: "localhost", Port "2222", login: "vagrant", password: "vagrant".

Now install your software if not already defined in you Vagrantfile.

Exit the VM and run vagrant package --base my-new-box-name --output my-new-box-name.box. Vagrant will export the actual VM in a file.

Run vagrant box add my-new-box-name file:///c:/path/to/my-new-box-name.box (relative path does also work: file://my-new-box-name.box) to import your new box.
vagrant box list will list your new box.
The box-file can be deleted.
Now you can use the box in new Vagrantfiles.

See also Custom Vagrant Cloud Versioned Box Host.

Authentication error

If Vagrant has problems logging in and fails with "Warning: Authentication failure. Retrying..." take a look at Vagrant box authentication failure after packaging box or set the loginmethod to password by adding config.ssh.password = "vagrant" to your Vagrantfile. See SSH settings for more information.

Vagrant.configure(2) do |config|
#Choose your base-boxT. Here it is Ubuntu 14.04 (Trusty Tahr) 64 Bit
config.vm.box = "ubuntu/trusty64"
#Wait max 10 minutes (600 seconds) to start VM without provisioning
config.vm.boot_timeout = 600
config.vm.provider :virtualbox do |p|
#Name your box
p.name = 'my-new-box-name'
p.cpus = 1
p.memory = 1024
opts = ['modifyvm', :id, '--natdnshostresolver1', 'on']
p.customize opts
end
end
@salmira
Copy link

salmira commented Nov 2, 2020

Failed proposed command [vagrant package --base my-new-box-name --output my-new-box-name.box] - no .box file created!

Found reason: '--base' option now requires 'Name of a VM in VirtualBox to package as a base box (VirtualBox Only)'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment