This project contains the Packer build configurations for all of Jeff Geerling's (geerlingguy's) Vagrant Boxes. Each box builds a minimal base box for use with VirtualBox. Available boxes include:
- geerlingguy/ubuntu2004 -
ubuntu2004
directory - geerlingguy/ubuntu1804 -
ubuntu1804
directory - geerlingguy/rockylinux8 -
rockylinux8
directory - geerlingguy/centos7 -
centos7
directory - geerlingguy/debian11 -
debian11
directory - geerlingguy/debian10 -
debian10
directory - geerlingguy/debian9 -
debian9
directory
All of these boxes are available as public, free Vagrant boxes and can be used with the command:
vagrant init geerlingguy/[box name here]
vagrant init raufhammad/[box name here]
You can also fork this repository and customize a build configuration with your own Ansible roles and playbooks to build a fully custom Vagrant box using Packer. For one such example, see the Drupal VM Packer Build.
The following software must be installed/present on your local machine before you can use Packer to build any of these Vagrant boxes:
Make sure all the required software (listed above) is installed, then cd into one of the box directories and run:
$ packer build -var 'version=1.2.0' box-config.json
$ packer build -var 'version=0.0.1' box-config.json.pkr.hcl
After a few minutes, Packer should tell you the box was generated successfully, and the box was uploaded to Vagrant Cloud.
Note: This configuration includes a post-processor that pushes the built box to Vagrant Cloud (which requires a
VAGRANT_CLOUD_TOKEN
environment variable to be set); remove thevagrant-cloud
post-processor from the Packer template to build the box locally and not push it to Vagrant Cloud. You don't need to specify aversion
variable either, if not using thevagrant-cloud
post-processor.
Whenever VirtualBox is updated, it's best to re-build all the base boxes so they have the latest guest additions.
Assuming you have Ansible and Packer installed already, and you have a VAGRANT_CLOUD_TOKEN
available in your environment, you can run the playbook to build and push updated versions for all the boxes:
ansible-playbook build-boxes.yml
You can also build and push just one box:
ansible-playbook build-boxes.yml -e "{'boxes':['debian10']}"
There's an included Vagrantfile that allows quick testing of the built Vagrant boxes. From the same box directory, run the following command after building the box:
$ vagrant up
Test that the box works correctly, then tear it down with:
$ vagrant destroy -f
- Ubuntu24.04 - Noble Numbat. Links https://askubuntu.com/questions/1403686/ubuntu-22-04-autoinstall-method
vagrant-registry provider has been added in packer plugins "github.com/hashicorp/vagrant"
$ packer plugins install github.com/hashicorp/vagrant
VagrantCloud is being decommisioned and replaced by HCL Vagrant Repository. Read the migration documents.
MIT
These configurations were originally published by Jeff Geerling, author of Ansible for DevOps on his Github Repository.
These configurations are a fork from above and maintained by Hammad Rauf.