Skip to main content

Working with Vagrant Boxes

1. Adding Box

Command Description Example
vagrant box add Adds a new box to Vagrant vagrant box add ubuntu/focal64
vagrant box add --name Adds a box with a custom name vagrant box add --name mybox ubuntu/focal64
vagrant box add --box-version Adds a specific version of the box vagrant box add --box-version 20.04 ubuntu/focal64

Example: Adding a Box from a URL

vagrant box add https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.box

Example: Adding a Box with Custom Name

vagrant box add --name ubuntu2004 https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.box

2. Listing Installed Boxes

Command Description Notes
vagrant box list List all installed boxes Shows box name, version, and provider
vagrant box list --machine-readable Output in machine-readable format Useful for scripting and automation

Example: Listing installed boxes

<pre><code>$ vagrant box list
ubuntu/focal64 (virtualbox, 2024.01.01)
centos/7 (libvirt, 2023.12.01)
</code></pre></div>

3. Updating Box

Command Description Notes
vagrant box update Updates all boxes or a specific box to the latest version available. Can be run without arguments to update all boxes, or with a box name to update a specific one.
vagrant box update --box <name> Updates a specific box to the latest version. Useful when you want to update only one box in your environment.

Example: Updating a Specific Box

vagrant box update --box hashicorp/precise64
Note: Vagrant will check for updates in the configured box sources and download the latest version if available.

4. Removing Box

Command Description Notes
vagrant box remove <name> Removes a box from the local system Requires the box name as argument
vagrant box remove <name> --force Removes a box without confirmation prompt Useful for automation scripts

Example: Remove a Box

vagrant box remove ubuntu/focal64

Example: Remove a Box Without Confirmation

vagrant box remove ubuntu/focal64 --force
Note: Removing a box does not affect Vagrant environments that are currently using it. Those environments will continue to function until destroyed.

5. Packaging Custom Box

Command Description Notes
vagrant package Package the current Vagrant environment into a box Creates a .box file from the current environment
vagrant package --output <filename> Specify output filename for the box Useful for custom naming of the packaged box
vagrant package --base <name> Package a base box by name Useful when you have an existing VM to package
vagrant package --vagrantfile <path> Include a custom Vagrantfile in the package Allows customization of the box's behavior

Example: Packaging a Custom Box

vagrant package --output my-custom-box.box

Example: Packaging with Custom Vagrantfile

vagrant package --vagrantfile ./custom-Vagrantfile
Note: The box will include all the configuration and state of the current Vagrant environment.
Warning: Ensure that any sensitive data or credentials are removed before packaging a box for distribution.

6. Checking Box Outdated Status

Use the vagrant box outdated command to check if any installed boxes are outdated compared to the latest version available.

Command Description Notes
vagrant box outdated Checks all installed boxes for updates Shows list of outdated boxes and their current/latest versions
vagrant box outdated --box <name> Checks specific box for updates Only checks the specified box, not all installed boxes

Example: Checking outdated status for all boxes

$ vagrant box outdated

Example: Checking outdated status for a specific box

$ vagrant box outdated --box ubuntu/focal64
Note: The command will show boxes that are outdated and provide information about the latest available version.
Warning: If a box is outdated, it may not have the latest security patches or features.

7. Pruning Old Box Versions

Over time, Vagrant can accumulate multiple versions of the same box, which consume disk space. Pruning old box versions helps manage storage and keeps your environment clean.

Action Description Command
List all boxes Shows all installed boxes with their versions vagrant box list
Remove specific box version Deletes a specific version of a box vagrant box remove <name> --box-version <version>
Remove all versions of a box Deletes all versions of a specific box vagrant box remove <name>

Example: Remove a specific box version

$ vagrant box remove hashicorp/precise64 --box-version 1.1.0

Example: Remove all versions of a box

$ vagrant box remove hashicorp/precise64
Note: Removing a box that is currently in use by a Vagrant environment will cause errors when trying to start or reload the environment. Ensure that no running environments depend on the box before removing it.

8. Verifying Box Integrity

Example: Check box checksum

vagrant box verify mybox.box --checksum-type sha256 --checksum <expected_checksum>
Option Description Default
--checksum-type Hash algorithm used for verification (sha1, sha256, sha512) sha256
--checksum Expected checksum value to compare against None
Note: Vagrant does not automatically verify checksums during box addition unless explicitly specified.
Warning: Using an outdated or incorrect checksum can lead to security vulnerabilities or corrupted box files.

Verification Process Summary

  • Download the box file from a trusted source
  • Calculate the checksum using the specified algorithm
  • Compare it with the provided or expected value
  • If mismatched, do not proceed with box usage

9. Using Box Versioning

Version Type Description Usage
vagrant box add Adds a new box to the local collection vagrant box add hashicorp/precise64
vagrant box list Lists all boxes available locally vagrant box list
vagrant box remove Removes a specific box from local storage vagrant box remove hashicorp/precise64
vagrant box update Updates all boxes or a specific one to the latest version vagrant box update hashicorp/precise64

Example: Adding a Box with Version

vagrant box add hashicorp/precise64 2.0.0

Example: Listing Box Versions

vagrant box list
Note: Box versions are managed by Vagrant and can be specified during addition or updated separately.

10. Downloading Box Manually

Step Description Action
1 Find a box image Visit https://app.vagrantup.com/boxes/search or a provider's repository to find the desired box image.
2 Download the box manually Use vagrant box add with a direct URL to the box file (e.g., .box file).
3 Verify box addition Run vagrant box list to confirm the box is available in the local registry.

Example: Adding a Box from URL

vagrant box add my-box https://example.com/my-box-1.0.box
Note: Ensure the box URL is accessible and the file format is valid (e.g., .box).

Was this article helpful?