Skip to content
Packer templates for building minimal Vagrant baseboxes
Shell Ruby PowerShell Batchfile
Find file
Latest commit 5ed84e2 @cheeseplus cheeseplus Merge pull request #527 from chef/chris-rock/omnios
update sha1 for omnios
Failed to load latest commit information.
bin Fixing headless check
builds Remove subdirectories under `build/` as they are no longer used.
floppy Add build metadata to boxes and build artifacts.
http Enterprise Linux 7.2 (RHEL/CentOS/OEL)
scripts simplify distro detection for RHEL-derivatives
vagrantfile_templates removing internal network
.gitattributes Force CRLF on Autounattend files for Windows
.gitignore Ignore .kitchen dir
.travis.yml fixing unzip
CHANGELOG.md Cutting 2.2.3
Gemfile Remove Vagrant Bundler dependencies.
LICENSE [OC-1013] - move definitions from basebox project
MAINTAINERS.md Opscode -> Chefs and other minor stuff
NOTICE.md Opscode -> Chefs and other minor stuff
OLD-BOXES.md Updated README with CentOS 7.1 boxes
README.md VMWare Fedora 23 box can't be built.
Rakefile Remove all bento-* vagrant instances prior to test
Thorfile Update Thorfile to run Packer commands in root of project.
build.sh Making upload/release optional
buildkite.rb First stab at a buildkite script.
centos-5.11-i386.json squashed commit to add qemu options for all boxes
centos-5.11-x86_64.json squashed commit to add qemu options for all boxes
centos-6.7-i386.json squashed commit to add qemu options for all boxes
centos-6.7-x86_64.json squashed commit to add qemu options for all boxes
centos-7.2-x86_64.json Enterprise Linux 7.2 (RHEL/CentOS/OEL)
debian-6.0.10-amd64.json squashed commit to add qemu options for all boxes
debian-6.0.10-i386.json squashed commit to add qemu options for all boxes
debian-7.8-amd64.json squashed commit to add qemu options for all boxes
debian-7.8-i386.json squashed commit to add qemu options for all boxes
debian-7.9-amd64.json squashed commit to add qemu options for all boxes
debian-7.9-i386.json squashed commit to add qemu options for all boxes
debian-8.1-amd64.json figured out how to fix the ubuntu/debian bits use virtio instead of scsi
debian-8.1-i386.json figured out how to fix the ubuntu/debian bits use virtio instead of scsi
debian-8.2-amd64.json figured out how to fix the ubuntu/debian bits use virtio instead of scsi
debian-8.2-i386.json figured out how to fix the ubuntu/debian bits use virtio instead of scsi
debian-8.3-amd64.json Add support for Debian GNU/Linux 8.3
debian-8.3-i386.json Add support for Debian GNU/Linux 8.3
fedora-20-i386.json squashed commit to add qemu options for all boxes
fedora-20-x86_64.json squashed commit to add qemu options for all boxes
fedora-21-i386.json squashed commit to add qemu options for all boxes
fedora-21-x86_64.json squashed commit to add qemu options for all boxes
fedora-22-i386.json Fixing Fedora 22 build tools to fix vm tools
fedora-22-x86_64.json Fixing Fedora 22 build tools to fix vm tools
fedora-23-i386.json Support Fedora 23
fedora-23-x86_64.json Support Fedora 23
freebsd-10.2-amd64.json squashed commit to add qemu options for all boxes
freebsd-10.2-i386.json squashed commit to add qemu options for all boxes
freebsd-9.3-amd64.json squashed commit to add qemu options for all boxes
freebsd-9.3-i386.json squashed commit to add qemu options for all boxes
macosx-10.10.json Remove the headless option for Parallels builder.
macosx-10.11.json Add template for OS X 10.11 El Capitan
macosx-10.7.json Remove the headless option for Parallels builder.
macosx-10.8.json Remove the headless option for Parallels builder.
macosx-10.9.json Remove the headless option for Parallels builder.
omnios-r151010j.json Remove the headless option for Parallels builder.
omnios-r151014.json update sha1 for omnios according to http://omnios.omniti.com/wiki.php…
opensuse-13.2-i386.json squashed commit to add qemu options for all boxes
opensuse-13.2-x86_64.json squashed commit to add qemu options for all boxes
oracle-5.11-i386.json DRY up oracle versions, all boxes build
oracle-5.11-x86_64.json DRY up oracle versions, all boxes build
oracle-6.6-i386.json DRY up oracle versions, all boxes build
oracle-6.6-x86_64.json DRY up oracle versions, all boxes build
oracle-6.7-i386.json DRY up oracle versions, all boxes build
oracle-6.7-x86_64.json DRY up oracle versions, all boxes build
oracle-7.2-x86_64.json Enterprise Linux 7.2 (RHEL/CentOS/OEL)
rhel-5.11-i386.json DRY up rhel
rhel-5.11-x86_64.json DRY up rhel
rhel-6.6-i386.json DRY up rhel
rhel-6.6-x86_64.json DRY up rhel
rhel-6.7-i386.json DRY up rhel
rhel-6.7-x86_64.json Fix RHEL 6.7 guest type
rhel-7.2-x86_64.json Enterprise Linux 7.2 (RHEL/CentOS/OEL)
sles-11-sp2-i386.json squashed commit to add qemu options for all boxes
sles-11-sp2-x86_64.json squashed commit to add qemu options for all boxes
sles-11-sp3-i386.json squashed commit to add qemu options for all boxes
sles-11-sp3-x86_64.json squashed commit to add qemu options for all boxes
sles-11-sp4-i386.json First pass at fixing up and DRYing sles
sles-11-sp4-x86_64.json First pass at fixing up and DRYing sles
sles-12-x86_64.json First pass at fixing up and DRYing sles
solaris-10.11-x86.json Shortening vm_name to avoid Parallels box corruption
solaris-11-x86.json update solaris 11 box to 11.3
ubuntu-10.04-amd64.json squashed commit to add qemu options for all boxes
ubuntu-10.04-i386.json squashed commit to add qemu options for all boxes
ubuntu-12.04-amd64.json squashed commit to add qemu options for all boxes
ubuntu-12.04-i386.json squashed commit to add qemu options for all boxes
ubuntu-14.04-amd64.json squashed commit to add qemu options for all boxes
ubuntu-14.04-i386.json squashed commit to add qemu options for all boxes
ubuntu-14.10-amd64.json squashed commit to add qemu options for all boxes
ubuntu-14.10-i386.json squashed commit to add qemu options for all boxes
ubuntu-15.04-amd64.json figured out how to fix the ubuntu/debian bits use virtio instead of scsi
ubuntu-15.04-i386.json figured out how to fix the ubuntu/debian bits use virtio instead of scsi
ubuntu-15.10-amd64.json Ubuntu 15.10 support
ubuntu-15.10-i386.json Ubuntu 15.10 support
windows-nano-tp3.json changing version back to 1.1 since it was never released

README.md

Bento

Build Status

Bento is a project that encapsulates Packer templates for building Vagrant base boxes. We use these boxes internally at Chef Software, Inc. for testing Hosted Chef, Chef Server and our open source cookbooks via test-kitchen.

This project is managed by the CHEF Release Engineering team. For more information on the Release Engineering team's contribution, triage, and release process, please consult the CHEF Release Engineering OSS Management Guide.

Pre-built Boxes

The following boxes are built from this repository's templates for publicly available platforms and are currently hosted via Atlas in the bento organization.

VirtualBox (5.0.12) VMware (8.0.2) Parallels (11.1.0)
centos-5.11 i386, x86_64 i386, x86_64 i386, x86_64
centos-6.7 i386, x86_64 i386, x86_64 i386, x86_64
centos-7.2 x86_64 x86_64 x86_64
debian-6.0.10 i386, amd64 i386, amd64 i386, amd64
debian-7.9 i386, amd64 i386, amd64 i386, amd64
debian-8.2 i386, amd64 i386, amd64 i386, amd64
fedora-21 i386, x86_64 i386, x86_64 i386, x86_64
fedora-22 x86_64 x86_64 x86_64
fedora-23 x86_64 x86_64
freebsd-9.3 amd64 amd64 amd64
freebsd-10.2 amd64 amd64 amd64
opensuse-13.2 i386, x86_64 i386, x86_64 i386, x86_64
ubuntu-10.04 i386, amd64 i386, amd64 i386, amd64
ubuntu-12.04 i386, amd64 i386, amd64 i386, amd64
ubuntu-14.04 i386, amd64 i386, amd64 i386, amd64
ubuntu-15.04 i386, amd64 i386, amd64 i386, amd64

Build Notes

  • Built on OSX 10.11.2 hosts
  • If you're using the Vagrant VMWare Fusion provider, using vagrant box add --provider vmware_desktop ... will work for these boxes. Using --provider vmware_fusion, will not.
  • The boxes are currently hosted on both Atlas and Amazon S3 to maintain backward compatibility with test-kitchen. Once test-kitchen changes defaults the S3 buckets will no longer be updated.

Older Boxes

Older boxes include Chef and therefore are not compatible with some new plugins. The full list of old boxes are available in the old boxes file.

Using Pre-built Boxes

Adding a bento box to vagrant:

$ vagrant box add bento/debian-8.1

Using a bento box in a Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.box = "bento/debian-8.1"
end

Requirements

  • Packer
  • At least one virtualization provider: Virtualbox, VMware Fusion, Parallels Desktop, etc

Build Your Own Bento Boxes

Using bento

In the bin directory of this repo is the bento utility which wraps packer as well as allowing other related functionality. This is an opinionated tool that the project uses for building the hosted boxes listed above.

To build multiple templates for all providers (VirtualBox, Fusion, Parallels, etc):

$ bin/bento build debian-8.1-amd64 debian-8.1-i386

To build a box for a single provider:

$ bin/bento build --only=virtualbox-iso debian-8.1-amd64

Using packer

Templates can still be built directly by packer

To build a template for all providers (VirtualBox, Fusion, Parallels):

$ packer build debian-8.2-amd64.json

To build a template only for a list of specific providers:

$ packer build -only=virtualbox-iso debian-8.2-amd64.json

To build a template for all providers except a list of specific providers:

$ packer build -except=parallels-iso,vmware-iso debian-8.2-amd64.json

If you want to use a another mirror site, use the mirror user variable.

$ packer build -var 'mirror=http://ftp.jaist.ac.jp/pub/Linux/debian-cdimage/release' debian-8.2-amd64.json

Congratulations! You now have box(es) in the ../builds directory that you can then add to Vagrant and start testing cookbooks.

Notes:

  • The box_basename can be overridden like other Packer vars with -var 'box_basename=debian-8.2'

Proprietary Boxes

Mac OS X, Red Hat Enterprise Linux, and SUSE Linux Enterprise Server templates are provided. However, their ISOs are not publicly retrievable and as such, the URLs in those templates are bogus. For RHEL and SLES, substitute a server where the ISOs are hosted, using the mirror variable as above.

Mac OS X

To build a Mac OS X box, you will need to start with an installer for your desired version of OS X. You will then need to use Tim Sutton's osx-vm-templates/) to modify that installer for use by packer. The output of that build will include the location of the ISO and its checksum, which you can substitute into your packer build command, e.g.:

$ packer build -var 'iso_checksum=<checksum>' -var 'iso_url=<iso_url>' macosx-10.9.json

There is a known issue where test-kitchen starts a Mac OS X box correctly, but vagrant up fails due to the absence of the HGFS kernel module. This is due to a silent failure during the VMware tools installation and can be corrected by installing the VMware tools on the Mac OS X box manually.

Note that, while it is possible to build OS X boxes for VirtualBox, it may not be ideal. VirtualBox provides no "guest additions" for OS X. Boxes consequently have limited networking configurability and must rely on rsync for folder syncing. VMWare, when available, is generally preferred.

Windows

Currently the project does not include any definitions for building Windows boxes. For other approaches to building Windows boxes, please see the following community projects:

Special Note About Building from Windows Hosts

When building boxes from a Windows host system, you must ensure that kickstart configuration files (ks.cfg for RHEL based systems) and preseed files (preseed.cfg for Debian based systems) have Unix line endings (i.e. lines end with LF character only). Moreover, it's also a good idea to have *.sh scripts with Unix line endings too.

When these files have Windows line endings, the group creation can fail in the pre-seed phase and in turn, prevents the user vagrant to be created correctly. This ultimately results in Packer not being able to connect to the newly booted up machine with an error message that looks like this:

==> virtualbox-iso: Waiting for SSH to become available...
==> virtualbox-iso: Error waiting for SSH: handshake failed: ssh: unable to authenticate, attempted methods [none password], no support

Since Packer tries to log in with user vagrant but it was not created successfully in the pre-seed phase, it is unable to connect to the machine and the packaging process stops.

By default, when cloning this repository, git should normalize ks.cfg, preseed.cfg and *.sh to Unix line endings and *.bat to Windows line endings, thanks to the .gitattributes file in the repository. However, if it's not the case because you have overridden line-ending conversion in your own git configuration, convert the offending files so they have the correct line endings.

Bugs and Issues

Please use GitHub issues to report bugs, features, or other problems. Please note: the JIRA issue tracker is no longer being used.

License & Authors

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!

Mac OS X templates were adopted wholesale from Fletcher Nichol's packer templates.

Copyright 2012-2015, 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.
Something went wrong with that request. Please try again.