bosh-lite is a wonderful part of the BOSH toolchain – you provision a single VM one time and then
bosh deploy creates Linux containers rather than full IaaS VMs. Super fast for development and super fast for CI pipelines for BOSH releases.
bosh-lite is popularly used locally via vagrant/virtualbox; but can also run on any AWS region thanks to the vagrant-aws plugin. This is great for people with smaller laptops, and great for sharing a running bosh-lite within your team or your CI system.
But then your team starts loosing track of who created each vagrant-based bosh-lite, which SSH keys let you SSH into the VM, and into which AWS account the bosh-lites are running (if you want to poke holes in its security groups, etc). Heck, you might just want to know "how many bosh-lites are we running here?"
We created snowwhite to coordinate all your bosh-lite deployments into a shared private git repo.
snowwhite is a CLI that manages a communal git repo. To get started and create the initial git repo
bosh-lites in the current folder:
curl https://raw.githubusercontent.com/cloudfoundry-community/snowwhite/master/installer.sh | bash
(see the README for other getting started options)
Next, edit the
bosh-lites/.envrc to setup your AWS credentials and VPC/subnet info:
Once you’ve commited changes and pushed your private
bosh-lites git repo, other members of your team need to clone it to their machines.
If you use Github and the handy hub cli to create a private repo:
hub create -p
git push origin master
Inside the shared
bosh-lites git repo is a
bin/snowwhite script. Once you’ve added the
bin/ folder to your
$PATH you get a range of handy subcommands.
To create a new bosh-lite on AWS you simply run:
snowwhite new tutorial
It will create a subfolder
deployments/tutorial and run the standard
vagrant up --provider=aws command there. It will commit the
.vagrant files and run
git push automatically to ensure the new files are shared.
That’s right – it is sort of using your new
bosh-lites repo as a database of bosh-lite/vagrant deployments.
If you look in your AWS console you’ll see a
To target the new bosh-lite and login for the first time, run:
snowwhite target tutorial
The output is as follows, and the default username/password is
+ bosh target 188.8.131.52 tutorial
Target set to `Bosh Lite Director'
Your username: admin
Enter password: [admin]
Logged in as `admin'
Your new bosh-lite needs a stemcell so next run:
bosh upload stemcell https://bosh.io/d/stemcells/bosh-warden-boshlite-ubuntu-trusty-go_agent --skip-if-exists
Hmm, probably could automate that. So in future perhaps you won’t need to do that. Seems silly to make you do it manually. But at least its a quick confirmation that your bosh-lite is working!
You can SSH into the bosh-lite machine:
snowwhite ssh tutorial
You can see a list of all available bosh-lites within your shared
And finally, when you’ve had enough fun you can destroy it:
snowwhite destroy tutorial
This will also remove the
git commit, and
git push the change.