bosh - configuring services
TRANSCRIPT
BOSHconfiguring 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 ServiceWhatever that means…
routers
LinuxLinuxLinux 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 busworker
VMsIaaS
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
Director 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