Giter Club home page Giter Club logo

bento's Introduction

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.

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. Boxes listed that are struck out (box) are broken/unreleased for the current version.

64 bit

VirtualBox VMware Parallels
centos-5.11 x86_64 x86_64 x86_64
centos-6.8 x86_64 x86_64 x86_64
centos-7.3 x86_64 x86_64 x86_64
debian-7.11 amd64 amd64 amd64
debian-8.7 amd64 amd64 amd64
fedora-24 x86_64 x86_64 x86_64
fedora-25 x86_64 x86_64 x86_64
freebsd-10.3 amd64 amd64 amd64
freebsd-11.0 amd64 amd64 amd64
opensuse-leap-42.2 x86_64 x86_64 x86_64
oracle-5.11 x86_64 x86_64 x86_64
oracle-6.8 x86_64 x86_64 x86_64
oracle-7.3 x86_64 x86_64 x86_64
ubuntu-12.04 amd64 amd64 amd64
ubuntu-14.04 amd64 amd64 amd64
ubuntu-16.04 amd64 amd64 amd64
ubuntu-16.10 amd64 amd64 amd64

32 bit

VirtualBox VMware Parallels
centos-5.11 i386 i386 i386
centos-6.8 i386 i386 i386
debian-7.11 i386 i386 i386
debian-8.7 i386 i386 i386
oracle-5.11 x86_64 x86_64 x86_64
oracle-6.8 x86_64 x86_64 x86_64
ubuntu-12.04 i386 i386 i386
ubuntu-14.04 i386 i386 i386
ubuntu-16.04 i386 i386 i386
ubuntu-16.10 i386 i386 i386

NOTE This table tracks only the latest release for a given version. Boxes may exist in Atlas or S3 but are not guaranteed to be updated at this time.

Build Notes

  • 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.

VMWare Fusion 8, Packer, systemd

Recent Linux distributions use systemd's logic to predictably name network devices. In our scenario, this is tied to the PCI slot id. For unknown reasons, boxes built with the default vmx config provided by packer use a different PCI slot id (32 instead of 33) once they got imported to VMWare Fusion 8, which results in a different device name and finally in broken networking. This issue is documented in the following places:

As a workaround we've started to provide the changed PCI slot id as a custom value with the packer definitions with Ubuntu 15.10+ and Debian 8+. However this is not yet tested, may not solve the issue and/or break compatibility with other VMWare products/versions!

Older Boxes

The contents of this Github repository represent the current state of Bento and not every packer config that has ever existed in the Bento project. As a distribution is made end of life or a newer minor version of a distribution ships, we will remove the existing configurations. At the time of the next Bento release those deprecations will be noted in the release notes. If you'd like to build that release for some reason, your best course of action is to checkout the release tag in git and use the existing configs at their last known working state.

Using Pre-built Boxes

Adding a bento box to vagrant:

$ vagrant box add bento/debian-8.7

Using a bento box in a Vagrantfile:

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

Requirements

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

Build Your Own Bento Boxes

Using bento

$ gem install bento-ya

If you use Bundler, you can add run bundle install from the bento repo. Prefix commands with bundle exec if doing so.

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

$ bento build debian-8.7-amd64 debian-8.7-i386

To build a box for a single provider:

$ bento build --only=virtualbox-iso debian-8.7-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.7-amd64.json

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

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

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

$ packer build -except=parallels-iso,vmware-iso debian-8.7-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.7-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.7'

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.11.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.

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-2016, Chef Software, Inc. (<[email protected]>)
Copyright 2011-2012, Tim Dysinger (<[email protected]>)

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.

bento's People

Contributors

amontalban avatar bflad avatar ceetav avatar client9 avatar eshamow avatar fnichol avatar hh avatar juliandunn avatar kameghamegha avatar kenhys avatar legal90 avatar lewg avatar mattiasgiese-b1 avatar mvermaes avatar mwrock avatar oven avatar petecheslock avatar rickard-von-essen avatar rjocoleman avatar rmoriz avatar schisamo avatar scotthain avatar sethvargo avatar svpace avatar tas50 avatar tduffield avatar tersmitten avatar tmatilai avatar vincentaubert avatar zuazo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.