BOSH Bootloader
Also known as bbl
(pronounced: "bubble"), bosh-bootloader is a command line
utility for standing up a CloudFoundry or Concourse installation
on an IaaS.
bbl
currently supports AWS, GCP, Microsoft Azure, Openstack and vSphere.
What bbl
does
Generate terraform template
The first step that bbl up
does is to generate a Terraform template based on your IAAS, IAAS region, and chosen load balancer type (or lack thereof).
The resulting Terraform template is emitted to the terraform/bbl-template.tf
file within your state directory.
Apply terraform template
After generating the Terraform template, bbl up
will run Terraform to apply that template, using also a variables file located at
vars/bbl.tfvars
within the state directory.
Map terraform outputs to BOSH create-env vars
Having applied the Terraform template, we now have a number of Terraform outputs, such as subnet CIDRs, reserved IP addresses, and load balancer configuration.
bbl
will transform those outputs into the inputs required by jumpbox-deployment
and bosh-deployment
and write them to the files vars/jumpbox-vars-file.yml
and vars/director-vars-file.yml
.
Execute BOSH create-env (jumpbox, director)
Next, bbl
shells out to the BOSH CLI to run bosh create-env
twice. The first time, bbl
uses jumpbox-deployment
and creates the jumpbox vm; the second time,
bbl
uses bosh-deployment
and creates the director VM. The exact commands that bbl
will run are emitted to the create-jumpbox.sh
and create-director.sh
files within the state directory.
Generate cloud-config template
After the director VM comes up, bbl
generates a base cloud-config, based on the IAAS, IAAS region, and chosen load balancer type.
Map Terraform outputs to BOSH cloud-config vars
Having generated a base cloud-config template, bbl
maps Terraform outputs to cloud-config variables. These variables include network and subnetwork names,
security groups or tags, and CIDR ranges, as well as load balancer target pool names.
Update cloud-config (director)
Finally, bbl
will update the director's cloud config, by shelling out to bosh update-cloud-config
.