Slide 1

Slide 1 text

BOSH: WHAT, HOW, WHEN Dr Nic Williams @drnic | drnicwilliams.com VP Dev Evangelism, Engine Yard

Slide 2

Slide 2 text

ENGINE YARD | DR NIC WILLIAMS | BOSH THE PROBLEM What it tried to solve

Slide 3

Slide 3 text

ENGINE YARD | DR NIC WILLIAMS | BOSH THEY built THIS

Slide 4

Slide 4 text

ENGINE YARD | @DRNIC | WHAT IS BOSH? hosted open source

Slide 5

Slide 5 text

ENGINE YARD | DR NIC WILLIAMS | BOSH • An app that runs apps • github: cloudfoundry/vcap • 40 different jobs • DIY installation (chef) open source

Slide 6

Slide 6 text

ENGINE YARD | DR NIC WILLIAMS | BOSH • cloudfoundry.com • 40 different jobs • Lots of code, lots of deployments • 1000 CF.com deploys in 1.5 years hosted

Slide 7

Slide 7 text

ENGINE YARD | DR NIC WILLIAMS | BOSH complex system

Slide 8

Slide 8 text

ENGINE YARD | DR NIC WILLIAMS | BOSH getting more complex

Slide 9

Slide 9 text

ENGINE YARD | DR NIC WILLIAMS | BOSH SOLUTION Cloud Foundry is not self-hosting BOSH hosts Cloud Foundry Cloud Foundry hosts your apps

Slide 10

Slide 10 text

ENGINE YARD | DR NIC WILLIAMS | BOSH Your app App App App

Slide 11

Slide 11 text

ENGINE YARD | DR NIC WILLIAMS | BOSH Your app managed by cloudfoundry App App App CF (40 jobs)

Slide 12

Slide 12 text

ENGINE YARD | DR NIC WILLIAMS | BOSH BOSH deploys cloudfoundry App App App CF (40 jobs) BOSH

Slide 13

Slide 13 text

ENGINE YARD | DR NIC WILLIAMS | BOSH BOSH provisions iaas App App App CF (40 jobs) BOSH vSphere, AWS

Slide 14

Slide 14 text

ENGINE YARD | DR NIC WILLIAMS | BOSH BOSH deploys cloudfoundry App App App CF (40 jobs) BOSH vSphere, AWS https://github.com/cloudfoundry/cf-release

Slide 15

Slide 15 text

ENGINE YARD | DR NIC WILLIAMS | BOSH BOSH deploys openshift App App App OpenShift BOSH vSphere, AWS

Slide 16

Slide 16 text

ENGINE YARD | DR NIC WILLIAMS | BOSH MySQL BOSH deploys wordpress BOSH vSphere, AWS wp wp wp nginx https://github.com/cloudfoundry/bosh-sample-release

Slide 17

Slide 17 text

ENGINE YARD | DR NIC WILLIAMS | BOSH BOSH deploys jenkins Slv Slv Slv Gerrit Jenkins BOSH vSphere, AWS https://github.com/cloudfoundry/oss-release

Slide 18

Slide 18 text

ENGINE YARD | DR NIC WILLIAMS | BOSH BOSH (9 jobs) BOSH deploys BOSH BOSH vSphere, AWS https://github.com/cloudfoundry/bosh-release

Slide 19

Slide 19 text

ENGINE YARD | DR NIC WILLIAMS | BOSH Your jobs and data BOSH deploys your system BOSH vSphere, AWS

Slide 20

Slide 20 text

ENGINE YARD | DR NIC WILLIAMS | BOSH “deploy” • Boot VMs • Boot & attach disks • Attach networking • Install packages • Run jobs

Slide 21

Slide 21 text

ENGINE YARD | DR NIC WILLIAMS | BOSH CORE IDEAS Deploy and change systems

Slide 22

Slide 22 text

ENGINE YARD | DR NIC WILLIAMS | BOSH Packages • Your code and package code equal citizens • Deployed together

Slide 23

Slide 23 text

ENGINE YARD | DR NIC WILLIAMS | BOSH compiled packages • Source code pre-compiled • Instant installation on new instances

Slide 24

Slide 24 text

ENGINE YARD | DR NIC WILLIAMS | BOSH orchestration • Add/remove instances • Change instance sizes/types • Upgrade packages • New instances; not dirty instances

Slide 25

Slide 25 text

ENGINE YARD | DR NIC WILLIAMS | BOSH ORCHESTRATION Demo

Slide 26

Slide 26 text

ENGINE YARD | DR NIC WILLIAMS | BOSH this box 1.0 stemcell 1 vm 0 or 1 attached disk Assigned IP packages installed jobs running

Slide 27

Slide 27 text

ENGINE YARD | DR NIC WILLIAMS | BOSH orchestrated changes 1.0 1.0 From...

Slide 28

Slide 28 text

ENGINE YARD | DR NIC WILLIAMS | BOSH infrastructure 1.0 1.0 From... to... 1.0 1.0 1.0 1.0

Slide 29

Slide 29 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 1.0 1.0 1.0 1.0 deployments

Slide 30

Slide 30 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 2.0 2.0 2.0 2.0 deployments

Slide 31

Slide 31 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 2.0 2.0 2.0 2.0 add more

Slide 32

Slide 32 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 2.0 2.0 2.0 2.0 2.0 2.0 add more 2.0 2.0 2.0

Slide 33

Slide 33 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 2.0 2.0 2.0 2.0 2.0 2.0 deploy again 2.0 2.0 2.0

Slide 34

Slide 34 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 3.0 deploy again 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0

Slide 35

Slide 35 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 canary

Slide 36

Slide 36 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 4.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 canary

Slide 37

Slide 37 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 canary

Slide 38

Slide 38 text

ENGINE YARD | DR NIC WILLIAMS | BOSH replace instances 1.0 2.0 2.0 3.0 1.0

Slide 39

Slide 39 text

ENGINE YARD | DR NIC WILLIAMS | BOSH reattach disk 1.0 2.0 2.0 3.0 1.0

Slide 40

Slide 40 text

ENGINE YARD | DR NIC WILLIAMS | BOSH protected from errors 1.0 2.0 2.0 3.0 1.0 4.0

Slide 41

Slide 41 text

ENGINE YARD | DR NIC WILLIAMS | BOSH GET A BOSH Tutorial for getting started https://github.com/drnic/bosh-getting-started/

Slide 42

Slide 42 text

ENGINE YARD | DR NIC WILLIAMS | BOSH https://github.com/drnic/bosh-getting-started/

Slide 43

Slide 43 text

ENGINE YARD | DR NIC WILLIAMS | BOSH follow this... https://github.com/drnic/bosh-getting-started/

Slide 44

Slide 44 text

ENGINE YARD | DR NIC WILLIAMS | BOSH OVERVIEW Stemcells, Releases and Deployments

Slide 45

Slide 45 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 3 tiers • Stemcell • Release • Deployment manifest 1.0 1.0

Slide 46

Slide 46 text

ENGINE YARD | DR NIC WILLIAMS | BOSH stemcells • The image for booting instances • AWS has AMIs • Each instance runs one job

Slide 47

Slide 47 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 1.0 releases • Packages to install from source • Jobs to run using monit • Job Templates rendered by deployment manifests

Slide 48

Slide 48 text

ENGINE YARD | DR NIC WILLIAMS | BOSH package • External source, e.g. mysql • Internal code, e.g. your app • They are equal citizens of BOSH 1.0

Slide 49

Slide 49 text

ENGINE YARD | DR NIC WILLIAMS | BOSH deployment manifest • Release version • Properties for job templates • Instance types/sizes, disk, regions (cloud properties) • Pools of instances • Network/IPs allocated

Slide 50

Slide 50 text

ENGINE YARD | DR NIC WILLIAMS | BOSH example • 1 VM running Redis

Slide 51

Slide 51 text

YOUR COMPANY NAME | LONG AND INTERESTING PRESENTATION TITLE | VERSION NO. XX | 06 /02/2012 example

Slide 52

Slide 52 text

ENGINE YARD | DR NIC WILLIAMS | BOSH redis • Stemcell • Package: redis • Job: redis ‣ uses redis package ‣ runs redis-server via monit • Deployment manifest

Slide 53

Slide 53 text

ENGINE YARD | DR NIC WILLIAMS | BOSH package: redis

Slide 54

Slide 54 text

ENGINE YARD | DR NIC WILLIAMS | BOSH install from source

Slide 55

Slide 55 text

ENGINE YARD | DR NIC WILLIAMS | BOSH job: redis

Slide 56

Slide 56 text

ENGINE YARD | DR NIC WILLIAMS | BOSH job template properties

Slide 57

Slide 57 text

ENGINE YARD | DR NIC WILLIAMS | BOSH release • Packages - source code • Jobs - processes to run

Slide 58

Slide 58 text

ENGINE YARD | DR NIC WILLIAMS | BOSH deploy • Deployment manifest (yaml) • Specific release & stemcells • Brings to life: instances, disks, and processes!

Slide 59

Slide 59 text

ENGINE YARD | DR NIC WILLIAMS | BOSH deployment manifest 1 VM to run job template values

Slide 60

Slide 60 text

ENGINE YARD | DR NIC WILLIAMS | BOSH deploy it! • “bosh deploy” • ... well, there’s more commands than that... • Let’s go deeper!

Slide 61

Slide 61 text

ENGINE YARD | DR NIC WILLIAMS | BOSH STEMCELLS Base images

Slide 62

Slide 62 text

ENGINE YARD | DR NIC WILLIAMS | BOSH get a stemcell bosh  public  stemcells bosh  download  public  stemcell   bosh  upload  stemcell  

Slide 63

Slide 63 text

ENGINE YARD | DR NIC WILLIAMS | BOSH uploaded stemcell

Slide 64

Slide 64 text

ENGINE YARD | DR NIC WILLIAMS | BOSH the right stemcell $  bosh  public  stemcells +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐+ |  Name                                                    |  Url  | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐+ |  micro-­‐bosh-­‐stemcell-­‐0.1.0.tgz  |  ...  | |  bosh-­‐stemcell-­‐aws-­‐0.5.1.tgz      |  ...  | |  bosh-­‐stemcell-­‐0.5.2.tgz              |  ...  | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐+ ami format

Slide 65

Slide 65 text

ENGINE YARD | DR NIC WILLIAMS | BOSH RELEASES Jobs and the dependent Packages

Slide 66

Slide 66 text

ENGINE YARD | DR NIC WILLIAMS | BOSH sample wordpress system MySQL BOSH AWS wp wp wp nginx

Slide 67

Slide 67 text

ENGINE YARD | DR NIC WILLIAMS | BOSH sample wordpress release MySQL wp wp wp nginx jobs

Slide 68

Slide 68 text

ENGINE YARD | DR NIC WILLIAMS | BOSH sample wordpress deployment MySQL wp wp wp nginx jobs deployed instances

Slide 69

Slide 69 text

ENGINE YARD | DR NIC WILLIAMS | BOSH create bosh release git  clone  https://github.com/cloudfoundry/ bosh-­‐sample-­‐release.git cd  bosh-­‐sample-­‐release bosh  create  release bosh  upload  release bosh  status Jobs +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ |  Name            |  Dev            |  Final        | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+ |  mysql          |            0.1  |            n/a  | |  nginx          |            0.1  |            n/a  | |  wordpress  |            0.1  |            n/a  | +-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐+

Slide 70

Slide 70 text

ENGINE YARD | DR NIC WILLIAMS | BOSH versioned releases $  cat  dev_releases/wordpress-­‐1.yml -­‐-­‐-­‐   packages:   -­‐  name:  apache2    version:  0.1-­‐dev    sha1:  0659d0ca2d038feae43119ea46b704...    dependencies:  [] -­‐  name:  mysql    version:  0.1-­‐dev ...

Slide 71

Slide 71 text

ENGINE YARD | DR NIC WILLIAMS | BOSH specific packages $  cat  dev_releases/wordpress-­‐1.yml -­‐-­‐-­‐   packages:   -­‐  name:  apache2    version:  0.1-­‐dev    sha1:  0659d0ca2d038feae43119ea46b704...    dependencies:  [] -­‐  name:  mysql    version:  0.1-­‐dev ...

Slide 72

Slide 72 text

ENGINE YARD | DR NIC WILLIAMS | BOSH specific jobs $  cat  dev_releases/wordpress-­‐1.yml ... jobs:   -­‐  name:  mysql    version:  0.1-­‐dev    sha1:  08faee9e9ba544e7d664846b0eb4c758d -­‐  name:  nginx    version:  0.1-­‐dev    sha1:  3ccc2f956a4253721b0707ed357f3f2a8 -­‐  name:  wordpress    version:  0.1-­‐dev    sha1:  e5a671095ad6ed539700591b3bdd3e098 ...

Slide 73

Slide 73 text

ENGINE YARD | DR NIC WILLIAMS | BOSH DEPLOY! Let’s boot some instances!

Slide 74

Slide 74 text

ENGINE YARD | DR NIC WILLIAMS | BOSH deploy manifest -­‐-­‐-­‐ name:  wordpress director_uuid:  576cd86b-­‐cdda-­‐4b93-­‐8f72-­‐a43 release:    name:  wordpress    version:  1 ... specific release

Slide 75

Slide 75 text

ENGINE YARD | DR NIC WILLIAMS | BOSH job properties properties:    nginx:        workers:  1    wordpress:        admin:  [email protected]        port:  8008        servers:            -­‐  23.21.64.192        servername:  myblog.com        db:            name:  wp            user:  wordpress            pass:  w0rdpr3ss    mysql:        address:  23.21.64.193        port:  3306        password:  rootpass template data

Slide 76

Slide 76 text

ENGINE YARD | DR NIC WILLIAMS | BOSH deploy bosh  deploy

Slide 77

Slide 77 text

ENGINE YARD | DR NIC WILLIAMS | BOSH UPGRADE! Unleash the orchestration power of BOSH

Slide 78

Slide 78 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 1.0 1.0 1.0 1.0 remember this!

Slide 79

Slide 79 text

ENGINE YARD | DR NIC WILLIAMS | BOSH 2.0 2.0 2.0 2.0 remember this!

Slide 80

Slide 80 text

ENGINE YARD | DR NIC WILLIAMS | BOSH package changed $  cat  dev_releases/wordpress-­‐2.yml -­‐-­‐-­‐   packages:   -­‐  name:  nginx    version:  0.2-­‐dev    sha1:  32452345ca2d038feae43119ea46b704...    dependencies:  [] -­‐  name:  mysql    version:  0.1-­‐dev ...

Slide 81

Slide 81 text

ENGINE YARD | DR NIC WILLIAMS | BOSH change manifest -­‐-­‐-­‐ name:  wordpress director_uuid:  576cd86b-­‐cdda-­‐4b93-­‐8f72-­‐a43 release:    name:  wordpress    version:  2 ... specific release

Slide 82

Slide 82 text

ENGINE YARD | DR NIC WILLIAMS | BOSH deploy bosh  deploy

Slide 83

Slide 83 text

ENGINE YARD | DR NIC WILLIAMS | BOSH TOOLS Make releases faster

Slide 84

Slide 84 text

ENGINE YARD | DR NIC WILLIAMS | BOSH handcrafted releases • Find source tgz • Write installers • Write monit scripts • Write config files

Slide 85

Slide 85 text

ENGINE YARD | DR NIC WILLIAMS | BOSH basics gem  install  bosh-­‐gen bosh-­‐gen  new  simple-­‐redis cd  simple-­‐redis bosh-­‐gen  package  redis bosh-­‐gen  job  redis  -­‐d  redis

Slide 86

Slide 86 text

ENGINE YARD | DR NIC WILLIAMS | BOSH alternately • Opscode-like collection of packages and jobs

Slide 87

Slide 87 text

ENGINE YARD | DR NIC WILLIAMS | BOSH WHEN When to use BOSH?

Slide 88

Slide 88 text

ENGINE YARD | DR NIC WILLIAMS | BOSH complete control • Describe everything explicitly • Orchestration between deployments

Slide 89

Slide 89 text

ENGINE YARD | DR NIC WILLIAMS | BOSH multicloud • Cloud Provider Interface (CPI) • vSphere • AWS • OpenStack (via PistonCloud) • 12 methods to implement

Slide 90

Slide 90 text

ENGINE YARD | DR NIC WILLIAMS | BOSH downsides • Prepared to throw VMs at it • Cannot use OS packaging • Currently for Ubuntu • No RAID (0 or 1 disk)