Bento is a project that encapsulates Packer templates for building Vagrant base boxes. A subset of templates are built and published to the bento org on Vagrant Cloud. These published boxes serve as the default boxes for kitchen-vagrant.
Adding a bento box to Vagrant
$ vagrant box add bento/ubuntu-18.04
Using a bento box in a Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-18.04"
end
- Packer
- Vagrant
- At least one of the following virtualization providers:
- VirtualBox
- VMware Fusion
- VMware Workstation
- Parallels Desktop also requires Parallels Virtualization SDK
- KVM *
- Hyper-V *
*NOTE: support for these providers is considered experimental and corresponding Vagrant Cloud images may or may not exist.
To build an Ubuntu 18.04 box for only the VirtualBox provider
$ cd packer_templates/ubuntu
$ packer build -only=virtualbox-iso ubuntu-18.04-amd64.json
To build Debian 11.0 32bit boxes for all possible providers (simultaneously)
$ cd packer_templates/debian
$ packer build debian-11.0-i386.json
To build CentOS 7.7 boxes for all providers except VMware and Parallels
$ cd packer_templates/centos
$ packer build -except=parallels-iso,vmware-iso centos-7.7-x86_64.json
To use an alternate mirror
$ cd packer_templates/fedora
$ packer build -var 'mirror=http://mirror.utexas.edu/fedora/linux' fedora-31-x86_64.json
To build a Windows 10 Enterprise Gen 2 box for the Hyper-V provider
$ cd packer_templates/windows
$ packer build windows-10gen2.json
If the build is successful, your box files will be in the builds
directory at the root of the repository.
*NOTE: box_basename can be overridden like other Packer vars with -var 'box_basename=ubuntu-18.04'
You must download the iso image with the Windows drivers for paravirtualized KVM/qemu hardware. You can do this from the command line: wget -nv -nc https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -O virtio-win.iso
.
You can use the following sample command to build a KVM/qemu Windows box:
packer build --only=qemu --var virtio_win_iso=~/virtio-win.iso windows-2019.json
Templates for operating systems only available via license or subscription are also available in the repository, these include but are not limited to: Red Hat Enterprise Linux, and SUSE Linux Enterprise. As the ISOs are not publicly available the URL values will need to be overridden as appropriate. We rely on the efforts of those with access to licensed versions of the operating systems to keep these up-to-date.
Most of the providers expect unrestricted access to networking in order to build as expected. We can't enumerate all possible firewall configurations but include some snippets below that might be useful to users.
$VS = "Standardswitch"
$IF_ALIAS = (Get-NetAdapter -Name "vEthernet ($VS)").ifAlias
New-NetFirewallRule -Displayname "Allow incomming from $VS" -Direction Inbound -InterfaceAlias $IF_ALIAS -Action Allow
Hyper-V Gen 2 VMs do not support floppy drives. If you previously provided resources using a floppy drive, you must add those files to your Gen 2 iso images, in particular:
autounattend.xml
: The Gen 2autounattend.xml
file supports EFI partitions. Update theautounattend.xml
with the correct Windows version for your systems and ensure that the partitions are correct for your situation. You also need to manage the driver disk that holds the hyper-v guest services drivers and adjust theautounattend.xml
file as appropriate.base_setup.ps1
Please use GitHub issues to report bugs, features, or other problems.
A huge thank you to these related projects from which we've taken inspiration and often used as a source for workarounds in complex world of base box building.
- https://github.com/boxcutter
- https://github.com/lavabit/robox
- https://github.com/mcandre/packer-templates
- https://github.com/timsutton/osx-vm-templates
- https://github.com/ferventcoder/vagrant-windows-puppet/tree/master/baseboxes
These basebox templates were converted from veewee definitions originally based on work done by Tim Dysinger to make "Don't Repeat Yourself" (DRY) modular baseboxes. Thanks Tim!
- Author: Chris McClimans (chris@hippiehacker.org)
- Author: Fletcher Nichol (fnichol@nichol.ca)
- Author: Joshua Timberman (joshua@chef.io)
- Author: Julian Dunn (jdunn@chef.io)
- Author: Ross Timson (ross@rosstimson.com)
- Author: Seth Chisamore (schisamo@chef.io)
- Author: Stephen Delano (stephen@chef.io)
- Author: Tim Dysinger (tim@dysinger.net)
- Author: Tim Smith (tsmith@chef.io)
- Author: Tom Duffield (tom@chef.io)
Copyright 2012-2020, Chef Software, Inc. (<legal@chef.io>)
Copyright 2011-2012, Tim Dysinger (<tim@dysinger.net>)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.