Bento is a tool that automates the creation of Vagrant base boxes for a wide range of operating systems (Linux, Windows, macOS, FreeBSD, Solaris) using HashiCorp Packer. It provides a Ruby CLI (`bento`) that wraps Packer builds, manages metadata, runs Test Kitchen validation, and uploads boxes to Vagrant Cloud. The repository contains parameterized Packer HCL templates, OS-specific variable files, provisioner scripts (shell and PowerShell), and Windows unattended answer files. The architecture is a CLI orchestrator that delegates to external tools (Packer, Vagrant, VirtualBox, VMware, etc.) with a focus on reproducibility and multi-provider support. Although it originated from the Chef ecosystem, it is a standalone infrastructure tool used to produce the official 'bento' Vagrant boxes.
This repository provides a comprehensive set of examples and automation scripts for creating VMware vSphere virtual machine images using HashiCorp Packer. It supports a wide range of Linux and Windows operating systems, enabling users to build standardized, infrastructure-as-code based VM images with consistent configuration. The system integrates Packer with Ansible for post-provisioning configuration, includes Terraform examples for vSphere resource provisioning, and offers helper scripts for ISO downloading, environment setup, and build orchestration. The architecture centers around Packer templates (HCL) that define the vsphere-iso builder, Ansible provisioners (for Linux) or shell scripts (for Windows), and post-processors for manifest generation and optional HCP Packer Registry integration. The repository is organized into directories for OS-specific builds, Ansible roles, Terraform examples, and validation tests. Key entry points include the interactive build.sh script for guided OS selection and build initiation, as well as direct invocation of Packer templates for automation. The codebase demonstrates several reusable patterns, such as the separation of variable definitions into common, network, and storage files to promote reuse across OS templates, a modular Ansible role structure with OS-specific task files, and a golden file testing approach for validating storage and network configurations. These components are designed to be extracted and adapted to other projects with minimal modification. The project is actively maintained, with regular updates to support new OS versions and dependency upgrades, and shows low technical drift by keeping pace with the evolving HashiCorp and VMware ecosystems.