BOSH
The BOSH (or "BOSH outer shell") tool handles building, deployment, configuring, and management of software. It's best described as an "orchestration" tool perhaps.
It is developed as part of the Cloud Foundry project. Cloud Foundry is a platform-as-a-service system which we would be interested in being able to deploy with Baserock. Cloud Foundry initially used Chef for orchestration, but later developed BOSH to replace it.
BOSH and Baserock
BOSH does some building of software, but also requires a prebuilt base operating system image (called a stemcell). Baserock provides systems built entirely from source, and also provides a way of describing deployments, but the Baserock deployment tooling is very minimal and doesn't provide any ongoing monitoring functionality of its own. Due to this overlap of functionality, it's tricky to work out how to use Baserock with BOSH in a way that brings out the advantages of both.
Early steps towards this:
- creating a Baserock 'stemcell' for use with BOSH
- writing a white paper comparing different aspects of the tools.
Understanding BOSH
This may be a bit of a dumping ground for now.
Bosh bootstrapping / development tools
Micro BOSH
This isn't an alternative implementation at all, it's just a name used to describe a fully working BOSH instance that runs in a single virtual machine.
BOSH itself is a set of VMs that needs to be deployed and managed with BOSH,
and thus there needs to be some way of bootstrapping an instance of BOSH. This
is done with the bosh micro
command, implemented by a plugin for the bosh
commandline interface called bosh_cli_plugin_micro.
Deployment of a 'Micro BOSH' instance using the bosh micro
command is
automated further by the bosh-bootstrap plugin, which automates the process
of setting up a 'Micro BOSH' instance in either an OpenStack cloud, a vSphere
cloud, or Amazon Web Services.
BOSH Lite
BOSH Lite isn't an alternative implementation of BOSH either. It's a tool for developers who are working on BOSH itself. It makes use of Vagrant, which is a general-purpose tool for creating and managing a development environment inside a virtual machines. Vagrant supports several virtualisation platforms, of these BOSH-Lite can work with VirtualBox, VMware and Amazon Web Services.
Vagrant requires a prebuilt operating system image, known as a base box.
BOSH-Lite provides custom baseboxes, which are built using the Packer tool.
For example, the VirtualBox basebox is built by running the
bin/build-virtualbox
BASH script, which causes Packer to build a base box
on top of an Ubuntu 14.04 x86_64 image following this
template.
As part of this it runs the packer-bosh Packer provisioning plugin, which
I can't really work out what it does right now. The Vagrantfile supplied by
BOSH-Lite tells Vagrant to download a prebuilt basebox from
https://atlas.hashicorp.com/ named cloudfoundry/boshlite. This basebox is built by a job in the Concourse CI system, defined in bosh-lite.git.
Alternative BOSH implementations
The canonical BOSH codebase is Cloud Foundry BOSH. However, it seems its input format is well-defined enough that at least one alternative implementation of BOSH is maintained as well.
Nice BOSH
Nise BOSH is a reimplementation of BOSH, in just over 1000 lines of Ruby code. (The canonical BOSH implementation is over 120,000 lines of Ruby code). Presumably it lacks some features compared to the main implementation.
BOSH Solo
BOSH Solo is an obsolete tool that seems like it would execute BOSH releases outside of a full BOSH environment.