packer-boxes
packer-boxes copied to clipboard
Jeff Geerling's Packer build configurations for Vagrant boxes.
Jeff Geerling's Vagrant Box Packer Builds
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]
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.
Requirements
The following software must be installed/present on your local machine before you can use Packer to build any of these Vagrant boxes:
Usage
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
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.
Building all the boxes
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']}"
Testing built boxes
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
License
MIT
Author
These configurations are maintained by Jeff Geerling, author of Ansible for DevOps.