Building an External BOSH CPI for IBM Bluemix with Go

by Sophia TurolJanuary 28, 2016
Dr. Max of IBM draws attention to the potential of the Golang in addressing fundamental deployment requirements and demonstrates how to build a Go-based external BOSH CPI.
Why read this?

The main infrastructure options available for Cloud Foundry are AWS, OpenStack, CloudStack, vSphere, vCloud, Microsoft Azure, Warden/Garden, and RackHD. In this video, Dr. Max highlights how to use external BOSH CPI to deploy Cloud Foundry on any cloud of choice.


To add support to a new cloud, one has to build an external BOSH CPI of one's own. With his team, Dr. Max of IBM have developed a new open-source BOSH CPI written in Go. Used to deploy IBM Bluemix on SoftLayer, now it can serve as a base for creating new external BOSH CPIs.

At a recent meetup at the Hacker Dojo in Mountain View, CA, IBM’s aka Dr. Max demonstrated how to build an external BOSH CPI tested for deploying IBM Bluemix on SoftLayer.


Why update BOSH?

In his session, Dr. Max outlined the main advantages of BOSH as a tool chain for Cloud Foundry:

  • agnostic (supports any cloud)
  • rolling deployments, resilient, flexible, supports non-connected deployments, etc.
  • allows for repetitive, predictable, and consistent deployments of large cloud software systems

He noted that even though BOSH is used for all types of Cloud Foundry deployments (development, testing, and production), it still has some issues of its own:

  • It’s monolithic, in that there’s just one package for all components (director, agent, CPIs, CLIs, etc.).
  • It’s mostly written in Ruby, which he said is “a great language,” but not appropriate for some tasks.
  • It can be complicated to use.


Removing the constraints

bosh-init (or microBOSH)—the bootstrap mechanism—efficiently manages BOSH deployments. With new rewrite in Golang and streamline of the CLI, bosh-init features:

  • one binary
  • supports all of the old BOSH microcommands
  • needs external CPIs to work
  • supports one VM deployments (for now)

With these new features under the belt, bosh-init offers a new, more efficient and practiсal, solution for approaching deployments.


Go all the way

Once he covered this initial material, Dr. Max talked a bit about the importance of the Go programming language.

“Go is a kick(butt) language. (I encourage everyone) to try it. When it comes to cloud stuff at this point in time, there’s nothing better than Go.” —Dr. Max, IBM

His primary enthusiasm for the language—which is also known as Golang—is that it solves dependency problems. Instead of pushing dependency management to the operations side in a devops environment, “the developer has to worry about it,” Max said. “When you give a binary to somebody that binary includes everything.”

Noting that, as always, “the devil’s in the details,” Dr. Max presented a fairly comprehensive look at the topic at hand. “Without BOSH, managing a complex environment would be almost impossible,” he said. “The CPI is (then) your way to connect BOSH with your cloud.”

Dr. Max added some remarks about service brokers to the end of his talk. “The Cloud Foundry services problem is to enable developers to discover and integrate third-party software (services) with their CF applications through the platform,” he said.

At the end of his talk, Dr. Max urged people to visit the various and sundry resources available to developers, administrators, and architects.

“Use the source, Luke,” he encouraged the audience.


Want details? Watch the video!

Table of contents

  1. Agenda (06’51”)
  2. Introduction to BOSH (07’56”)
  3. Introduction to bosh-init (microBOSH) (12’11”)
  4. MicroBOSH deployment manifest (17’37”)
  5. Demo: Building an external BOSH CPI for IBM Bluemix on SoftLayer (19’45”)
  6. What are BOSH eCPIs? (23’12”)
  7. Softlayer eCPIs: What? How? When? (33’39”)
  8. Overview of the approach: Architecture diagram (37’50”)
  9. What’s next? (44’33”)
  10. Questions and answers (47’29”)