bloomberg/chef-bcpc — pull request #143 by ericvw (2014-06-10 20:43:54+00:00)
Title: Simplify and decouple bootstrapping from Vagrant/VirtualBox

This PR introduces a series of changes to provide a bootstrap node image that is similar to that of a bare metal install, decouple the bootstrap/provisioning of the bootstrap node from Vagrant/VirtualBox, completely remove the usage of Vagrant.

### Bootstrap Node Image

If you look in the `images/` directory, I have introduced [Packer](http://packer.io) as a means to bake an image for the bcpc-bootstrap node. This automates the process of installing the base image of the bcpc-bootstrap node and, at the end of install, an exported image is available that may be imported. Once the image is built, it can be re-imported multiple times and serves the exact same functionality as Vagrant. The main advantage of using Packer is that we can build images that are similar to bare metal installations and provide a simple means to provision the installation of the base Ubuntu OS. Also, it allows to easily change the version of the Ubuntu OS that is used.

### Decoupling the the bootstrap process from Vagrant/VirtualBox

Now that we can utilize Packer, `vbox_create.sh` has been enhanced to use a `ssh_config` file to configure the rest of the communication with the bootstrap node. What this allows is all ssh communication/commands to be independent of whether the bootstrap node is a local VM or a bare metal machine. Several other locations where scripts were switching on the presence of `vagrant` have been updated appropriately.

### Removing Vagrant as an installation/development path

After a couple of attempts in getting an all-out Vagrantfile approach working, I have found that Vagrant is really intended for 'higher-up-the-stack' use cases where one doesn't care about specific machine configuration details.

Moving towards Packer replaces what Vagrant provided: getting started off with a base image for the bcpc-bootstrap node and providing a provisioned base OS. Currently, there is the one-time cost of having to build the image. This can be greatly sped up with `apt-mirror` or `apt-cacher-ng` that I will be provided in a future PR as an optimization for deployments.

### Going Forward

The overall changes when looking at the diff does look scary, but I would recommend reading through the final state of the changed scripts - hopefully the clarity and clean-up alleviates the concern of the 'massive' change. Once `packer` is available, you should be able to execute `vbox_create.sh` and get back up and running with a local OpenStack deployment of BCPC.