BOSH
configuring services
Andrew Clay Shafer
Gent 2015
Andrew Clay Shafer
@littleidea
Andrew Clay Shafer
has been very good to me
ASK ME ABOUT
PARETO INEFFICIENT
NASH EQUILIBRIUMS
What is BOSH?
Why is BOSH?
Platform as a Service
Whatever that means…
routers
Linux
LinuxLinux
Containers
message
bus
cloud controller
loggregators
controller
DB
etcd
hm9000
metrics firehose
a couple dozen services
UAA
login
What even is Elastic Runtime?
service
brokers
object
store
stagers
how do you
manage that thing?
if you wish to deploy a distributed
system from scratch, you must
first deploy the universe
stateful services
Elastic Runtime
“cloud”
BOSH
“metal”
configuration management™
apps
(the reason we put ourselves through this)
containers
VMs
machines
Typical
fast
unfast
distributed systems managing
distributed systems managing
distributed systems managing
distributed systems
<rant>managing</rant>
back to BOSH
BOSH is an open source tool chain for
release engineering, deployment, and
lifecycle management of large-scale
distributed services.
BOSH allows individual
developers and teams to easily
version, package and deploy
software in a reproducible manner.
Purposeful Goals
• Identifiability
• Reproducibility
• Consistency
• Agility
GOALS
• Identifiability - Being able to identify all of the source, tools,
environment, and other components that make up a particular
release.
• Reproducibility - The ability to integrate source, third party
components, data, and deployment externals of a software system
in order to guarantee operational stability.
• Consistency - The mission to provide a stable framework for
development, deployment, audit, and accountability for software
components.
• Agility - The ongoing research into what are the repercussions of
modern software engineering practices on the productivity in the
software cycle, i.e. continuous integration.
I READ IT ON
THE INTERNET
Whatever
need to manage a large
distributed system
• deployment
• configuration changes
• updates/upgrades - minimal downtime
• remediation
• scale out/scale in
• across multiple IaaS
need to manage a large
distributed system
configuration management™
necessary but not sufficient
BOSH is a distributed
package and process
orchestrator
packages and
processes
assumes knowledge…
idempotent resource
abstractions for fun and profit
desired state current state
service centric, not
server centric
– no CEO ever
“Good job provisioning servers this year”
highest level primitive:
deployment
Learning BOSH
Deployment - map release to IaaS
Release - package with some jobs
Stem Cell - VM with BOSH agent
Vocabulary
Stem Cell
Base VM with embedded BOSH agent
Release
• Manifest
• Packages
• spec
• packaged bits
• Jobs
• spec
• monit
• templates
Deployment
• releases
• compilation VMs
• canary settings
• network configurations
• resource pools (VMs, Disks, Networks)
• jobs
• job properties
So…what happens
when I deploy?
CLI
Director
message
bus
worker
VMs
IaaS
object storage
health
monitor
Director VM
CPI
(Cloud Provider Interface)
Director Starts VMs
Director VM
BOSH Agent Boots
Director VM
Director Pings Agent
Director VM
Assign Job to Agent
BlobstoreVM
Agent Fetches Releases
Agent Starts Jobs
VM
this happens for every
VM described in the
deployment
idempotent resource
abstractions for fun and profit
desired state current state
except now the resource is a running service
but how do I?
don’t
<rant>
automate brokeness
</rant>
learn you some Pareto Power Law
Warning
do you need a deathstar?
is your goal to deploy a
single instance of wordpress?
maybe, maybe not?
Learning Curve
effort
capability
That’s it
I’m here to help
https://www.flickr.com/photos/simplebitsdan/2477674571/
Now Hiring
DANK
@littleidea

Bosh - Configuring Services