THE SEVEN STAGES OF BOSH THE SEVEN STAGES OF BOSH Surviving - - PowerPoint PPT Presentation
THE SEVEN STAGES OF BOSH THE SEVEN STAGES OF BOSH Surviving - - PowerPoint PPT Presentation
THE SEVEN STAGES OF BOSH THE SEVEN STAGES OF BOSH Surviving successful Bosh adoption Surviving successful Bosh adoption Chris Hedley of CloudCredo Chris Hedley of CloudCredo Daniel Jones of EngineerBetter Daniel Jones of EngineerBetter STAGE
THE SEVEN STAGES OF BOSH THE SEVEN STAGES OF BOSH
Surviving successful Bosh adoption Surviving successful Bosh adoption
Chris Hedley of CloudCredo Chris Hedley of CloudCredo Daniel Jones of EngineerBetter Daniel Jones of EngineerBetter
STAGE 0: DISBELIEF & SHOCK STAGE 0: DISBELIEF & SHOCK
“the survivor refuses to accept that something “the survivor refuses to accept that something is true or real” is true or real”
OPERABILITY OPERABILITY
“the ability to keep an equipment, a system or “the ability to keep an equipment, a system or a whole industrial installation in a safe and a whole industrial installation in a safe and reliable functioning condition, according to reliable functioning condition, according to pre-defined operational requirements” pre-defined operational requirements”
WHAT BOSH DOES FOR YOU WHAT BOSH DOES FOR YOU
- 1. Create all the VMs
Create all the VMs
- 2. Auto-healing
Auto-healing
- 3. Rolling upgrades
Rolling upgrades
LEARNING POINTS LEARNING POINTS
- 1. Bosh is very powerful and does amazing things
Bosh is very powerful and does amazing things
- 2. Your team
Your team needs needs to learn a lot to learn a lot
STAGE 1: DENIAL STAGE 1: DENIAL
“the survivor imagines a false, preferable “the survivor imagines a false, preferable reality” reality”
LEARNING POINTS LEARNING POINTS
Remember that Bosh gives you: Remember that Bosh gives you:
- 1. Declaration of intent
Declaration of intent
- 2. Effectively immutable
Effectively immutable
- 3. IaaS agnostic
IaaS agnostic
- 4. Highly automated
Highly automated
- 5. Self-healing
Self-healing
- 6. Open source
Open source
STAGE 2: ANGER STAGE 2: ANGER
“the survivor becomes frustrated” “the survivor becomes frustrated”
Yoda - The Phantom Manifest Yoda - The Phantom Manifest “ “ Confusion leads to anger. Confusion leads to anger. Anger leads to hate. Anger leads to hate. Hate leads to Hate leads to production downtime production downtime. . ” ”
Bosh is not a power drill manufacturer Bosh is not a power drill manufacturer Bosh is not a basketball player Bosh is not a basketball player
BOSH
From Wikipedia, the free encyclopedia
This article includes a list of references, related reading or external links, but its sources remain unclear because it lacks inline citations. Please improve this article by introducing more precise citations. (June 2008) This article relies largely or entirely upon a single source. Relevant discussion may be found on the talk page. Please help improve this article by introducing citations to additional sources. (June 2008) Bidirectional-streams Over Synchronous HTTP (BOSH) is a transport protocol that emulates a bidirectional stream between two entities (such as a client and a server) by using multiple synchronous HTTP request/response pairs without requiring the use of polling or asynchronous chunking. For applications that require both "push" and "pull" communications, BOSH is significantly more bandwidth-efficient and responsive than most other bidirectional HTTP-based transport protocols and AJAX. BOSH achieves this by avoiding HTTP polling, yet it does so without resorting to chunked HTTP responses as is done in the technique known as Comet. To date, BOSH has been used mainly as a transport for traffic exchanged between Jabber/XMPP clients and servers (e.g., to facilitate connections from web clients and from mobile clients on intermittent networks). For "push", a BOSH client starts an HTTP request, but the server postpones sending a reply until it has data to send.[1] After receiving a reply, the client immediately makes another request on the same HTTP connection, so the server can always send data to the client without waiting for the client to poll. If, while waiting for a reply, the client needs to send data to the server, it opens a second HTTP connection. There are at most two HTTP connections open at a time, one on which the server can send data as a reply and one on which the client can send data as a POST. "Bidirectional-streams Over Synchronous HTTP (BOSH)" and "XMPP over BOSH" are draft standards of the XMPP Standards Foundation. The second related standard XMPP Over BOSH (XEP-0206) defines how BOSH may be used to transport XMPP stanzas. The result is an HTTP binding for XMPP communications that is intended to be used in situations where a device or client is unable to maintain a long-lived TCP connection to an XMPP server.
Article Talk Read Edit View history Search
Edit links Main page Contents Featured content Current events Random article Donate to Wikipedia Wikipedia store Interaction Help About Wikipedia Community portal Recent changes Contact page Tools What links here Related changes Upload file Special pages Permanent link Page information Wikidata item Cite this page Print/export Create a book Download as PDF Printable version Languages Français Create account Not logged in Talk Contributions
Bosh is not BOSH Bosh is not BOSH
Bosh Bosh
Bosh Bosh MicroBosh
MicroBosh
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh?
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh? Binary Bosh
Binary Bosh
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh? Binary Bosh
Binary Bosh
bosh‑lite bosh‑lite
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh? Binary Bosh
Binary Bosh
bosh‑lite bosh‑lite light bosh
light bosh
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh? Binary Bosh
Binary Bosh
bosh‑lite bosh‑lite light bosh
light bosh Nise Bosh
Nise Bosh
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh? Binary Bosh
Binary Bosh
bosh‑lite bosh‑lite light bosh
light bosh Nise Bosh
Nise Bosh bosh‑solo
bosh‑solo
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh? Binary Bosh
Binary Bosh
bosh‑lite bosh‑lite light bosh
light bosh Nise Bosh
Nise Bosh bosh‑solo
bosh‑solo
bosh‑gen bosh‑gen
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh? Binary Bosh
Binary Bosh
bosh‑lite bosh‑lite light bosh
light bosh Nise Bosh
Nise Bosh bosh‑solo
bosh‑solo
bosh‑gen bosh‑gen bosh‑bootstrap
bosh‑bootstrap
Bosh Bosh MicroBosh
MicroBosh Bosh Micro?
Bosh Micro?
bosh‑init bosh‑init Full Bosh?
Full Bosh? Binary Bosh
Binary Bosh
bosh‑lite bosh‑lite light bosh
light bosh Nise Bosh
Nise Bosh bosh‑solo
bosh‑solo
bosh‑gen bosh‑gen bosh‑bootstrap
bosh‑bootstrap traveling‑bosh
traveling‑bosh
JOBS JOBS
Jobs are made up of templates Jobs are made up of templates One job's templates are in One job's templates are in /var/vcap/jobs /var/vcap/jobs
SPECS SPECS
packaging spec != job spec != rspec packaging spec != job spec != rspec
THAT'S ANNOYING… THAT'S ANNOYING…
$ bosh $ bosh target target [ [W WARNING] ARNING] Loading Loading the cli took the cli took 12.4 12.4 seconds, consider cleaning your seconds, consider cleaning your gem gem environment environment
WAIT… WHAT? WAIT… WHAT?
$ bosh ssh $ bosh ssh … … Starting interactive shell Starting interactive shell on
- n job ha_proxy_z1/
job ha_proxy_z1/0 No RSA host No RSA host key key is is known known for for 10.244 10.244.0.34 .0.34 and and you have requested you have requested strict strict checking. checking. Host Host key key verification failed. verification failed.
DO NOT TRUST BOSH DO NOT TRUST BOSH
Started Started prepare prepare for for update update Started Started prepare prepare for for update update > > Delete Delete stemcell. Done (
- stemcell. Done (00
00: :00 00: :26 26) ) Started deploy micro bosh Started deploy micro bosh Started deploy micro bosh > Unpacking stemcell. Done ( Started deploy micro bosh > Unpacking stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Uploading stemcell. Done ( Started deploy micro bosh > Uploading stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Creating VM Started deploy micro bosh > Creating VM from from ami-e1577396 light. Done ( ami-e1577396 light. Done (00 00: :00 00: :33 33) ) Started deploy micro bosh > Waiting Started deploy micro bosh > Waiting for for the agent the agent
DO NOT TRUST BOSH DO NOT TRUST BOSH
Some time later... Some time later...
Started Started prepare prepare for for update update Started Started prepare prepare for for update update > > Delete Delete stemcell. Done (
- stemcell. Done (00
00: :00 00: :26 26) ) Started deploy micro bosh Started deploy micro bosh Started deploy micro bosh > Unpacking stemcell. Done ( Started deploy micro bosh > Unpacking stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Uploading stemcell. Done ( Started deploy micro bosh > Uploading stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Creating VM Started deploy micro bosh > Creating VM from from ami-e1577396 light. Done ( ami-e1577396 light. Done (00 00: :00 00: :33 33) ) Started deploy micro bosh > Waiting Started deploy micro bosh > Waiting for for the agent the agent
DO NOT TRUST BOSH DO NOT TRUST BOSH
Started Started prepare prepare for for update update Started Started prepare prepare for for update update > > Delete Delete stemcell. Done (
- stemcell. Done (00
00: :00 00: :26 26) ) Started deploy micro bosh Started deploy micro bosh Started deploy micro bosh > Unpacking stemcell. Done ( Started deploy micro bosh > Unpacking stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Uploading stemcell. Done ( Started deploy micro bosh > Uploading stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Creating VM Started deploy micro bosh > Creating VM from from ami-e1577396 light. Done ( ami-e1577396 light. Done (00 00: :00 00: :33 33) ) Started deploy micro bosh > Waiting Started deploy micro bosh > Waiting for for the agent the agent
DO NOT TRUST BOSH DO NOT TRUST BOSH
Later still... Later still...
Started Started prepare prepare for for update update Started Started prepare prepare for for update update > > Delete Delete stemcell. Done (
- stemcell. Done (00
00: :00 00: :26 26) ) Started deploy micro bosh Started deploy micro bosh Started deploy micro bosh > Unpacking stemcell. Done ( Started deploy micro bosh > Unpacking stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Uploading stemcell. Done ( Started deploy micro bosh > Uploading stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Creating VM Started deploy micro bosh > Creating VM from from ami-e1577396 light. Done ( ami-e1577396 light. Done (00 00: :00 00: :33 33) ) Started deploy micro bosh > Waiting Started deploy micro bosh > Waiting for for the agent the agent
DO NOT TRUST BOSH DO NOT TRUST BOSH
Started prepare Started prepare for for update update Started prepare Started prepare for for update > Delete stemcell. Done ( update > Delete stemcell. Done (00 00: :00 00: :26 26) ) Started deploy micro bosh Started deploy micro bosh Started deploy micro bosh > Unpacking stemcell. Done ( Started deploy micro bosh > Unpacking stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Uploading stemcell. Done ( Started deploy micro bosh > Uploading stemcell. Done (00 00: :00 00: :00 00) ) Started deploy micro bosh > Creating VM Started deploy micro bosh > Creating VM from from ami-e1577396 light. Done ( ami-e1577396 light. Done (00 00: :00 00: :33 33) ) Started deploy micro bosh > Waiting Started deploy micro bosh > Waiting for for the agent the agent log writing failed. can log writing failed. can't be called from trap context 't be called from trap context /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/buffered_io.rb: /net/ssh/buffered_io.rb:65 65: :in in `recv `recv': Connection reset by peer - recvfrom(2) (Errno::ECONNRESET) ': Connection reset by peer - recvfrom(2) (Errno::ECONNRESET) from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/buffered_io.rb: /net/ssh/buffered_io.rb:65 65: :in in `fill `fill' ' from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/transport/packet_stream.rb: /net/ssh/transport/packet_stream.rb:104 104: :in in `block `block in in next_packet next_packet from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/transport/packet_stream.rb: /net/ssh/transport/packet_stream.rb:95 95: :in in ` `loop loop' ' from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/transport/packet_stream.rb: /net/ssh/transport/packet_stream.rb:95 95: :in in `next_packet `next_packet from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/transport/session.rb: /net/ssh/transport/session.rb:184 184: :in in `block `block in in poll_message poll_message from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/transport/session.rb: /net/ssh/transport/session.rb:179 179: :in in ` `loop loop' ' from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/transport/session.rb: /net/ssh/transport/session.rb:179 179: :in in `poll_message `poll_message' ' from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/transport/session.rb: /net/ssh/transport/session.rb:164 164: :in in `next_message `next_message' ' from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/session.rb: /net/ssh/authentication/session.rb:95 95: :in in `block `block in in next_message next_message from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/session.rb: /net/ssh/authentication/session.rb:94 94: :in in ` `loop loop' ' from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/session.rb: /net/ssh/authentication/session.rb:94 94: :in in `next_message `next_message from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/methods/publickey.rb: /net/ssh/authentication/methods/publickey.rb:53 53: :in in `authenticate_with `authenticate_with from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/methods/publickey.rb: /net/ssh/authentication/methods/publickey.rb:20 20: :in in `block `block from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/key_manager.rb: /net/ssh/authentication/key_manager.rb:122 122: :in in `block `block in in from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/key_manager.rb: /net/ssh/authentication/key_manager.rb:119 119: :in in ` `each each' ' from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/key_manager.rb: /net/ssh/authentication/key_manager.rb:119 119: :in in `each_identity `each_identity from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/methods/publickey.rb: /net/ssh/authentication/methods/publickey.rb:19 19: :in in `authenticate `authenticate from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/session.rb: /net/ssh/authentication/session.rb:79 79: :in in `block `block in in authenticate authenticate from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/session.rb: /net/ssh/authentication/session.rb:66 66: :in in ` `each each' ' from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh/authentication/session.rb: /net/ssh/authentication/session.rb:66 66: :in in `authenticate `authenticate from from /Users/deejay/.gem/ruby/ /Users/deejay/.gem/ruby/2.1 2.1.3/gems/net-ssh- .3/gems/net-ssh-2.10 2.10.0.beta1/ .0.beta1/lib lib/net/ssh.rb: /net/ssh.rb:226 226: :in in `start `start' '
OF COURSE I'M SURE OF COURSE I'M SURE
via @xoebus via @xoebus
$ bosh deploy $ bosh deploy … … Deploying Deploying
- Are you sure you want to deploy? (type
Are you sure you want to deploy? (type 'yes' 'yes' to continue): y to continue): y Deployment canceled Deployment canceled Deployment canceled Deployment canceled
LEARNING POINTS LEARNING POINTS
- 1. Be prepared to work to build a mental model of Bosh
Be prepared to work to build a mental model of Bosh
- 2. Expect bugs
Expect bugs
STAGE 3: BARGAINING STAGE 3: BARGAINING
“the survivor seeks compromise” “the survivor seeks compromise”
BOSH HAS ITS OPINIONS BOSH HAS ITS OPINIONS
LEARNING POINTS LEARNING POINTS
- 1. Do not argue with Bosh
Do not argue with Bosh
STAGE 4: GUILT STAGE 4: GUILT
“the survivor believes to have committed sin” “the survivor believes to have committed sin”
LEAVING A BOSH BOMB LEAVING A BOSH BOMB
LEARNING POINTS LEARNING POINTS
- 1. Same as any niche technology choice
Same as any niche technology choice
- 2. Radiate reasons for using it
Radiate reasons for using it
- 3. Pair on release development
Pair on release development
STAGE 5: DEPRESSION STAGE 5: DEPRESSION
“the survivor has feelings of severe “the survivor has feelings of severe despondency and hopelessness” despondency and hopelessness”
TESTING TESTING
COMPOSITION COMPOSITION
EXTENSIBILITY EXTENSIBILITY
JOB MODULARITY JOB MODULARITY
CONFUSION CONFUSION
LEARNING POINTS LEARNING POINTS
- 1. Tooling is not great, do not expect it
Tooling is not great, do not expect it
- 2. All or nothing
All or nothing
- 3. Use bosh-lite
Use bosh-lite
- 4. Consider a pool of Boshes for CI
Consider a pool of Boshes for CI
STAGE 6: ACCEPTANCE STAGE 6: ACCEPTANCE
“a calm, retrospective view for the survivor, “a calm, retrospective view for the survivor, and a stable set of emotions” and a stable set of emotions”
LEARNING POINTS LEARNING POINTS
You now have: You now have:
- 1. IaaC
IaaC
- 2. A team capable of end-to-end continuous delivery
A team capable of end-to-end continuous delivery
STAGE 7: HOPE STAGE 7: HOPE
“the survivor develops a positive attitude “the survivor develops a positive attitude about the future” about the future”
bosh|
LM LGJA 9D <G; K ?A L@ M : ỵ: GK @ GF > J==FG<= ; > Ỗ : GK @ E 9A D A F? D A K L HA N GL9D LJ9; C=J HJGB =; L
- 1& A
K 9F GH=F K GM J; = LGGD > GJ J=D =9K = =F?A F==JA F?Ể <=HD GQ E =FLỂ D A > =; Q ; D = E 9F9?=E =FLỂ 9F< E GFA LGJA F? G> <A K LJA : M L=< K Q K L=E K ề 1== <G; K ề
CURATED RELEASES
; D GM <> GM F<JQ ụ : GK @
- ẏẎẠ ẏẎẞ
ẏẎẗ ề ề ề ; D GM <> GM F<JQ ụ ; > Ỗ J=D =9K = ẏẏẏ ẏẏẎ ẏẏẅ ề ề ề ; D GM <> GM F<JQ ụ ; > Ỗ E Q K I D Ỗ J=D =9K = ẏẓ ẏẒ ẏẏ ề ề ề ; D GM <> GM F<JQ ụ ; > Ỗ JA 9CỖ ; K Ỗ J=D =9K = ẎẎ Ẏẅ Ả ề ề ề HA N GL9D Ỗ ; > ụ ; > Ỗ J9: : A LE I Ỗ J=D =9K =
LATEST STEMCELLS
Ubuntu Trusty 5 1 6=FỖ &4+ *A ?@ L ẒẎẎẗ ụ HJ=N ễ 5 1 6=F ẒẎẎẗ ụ HJ=N ễ 5 1 6=F *A ?@ L ẒẎẎẗ ụ HJ=N ễ
- H=F1L9; C ) 4+
ẒẎẎẗ ụ HJ=N ễ
- H=F1L9; C ) 4+ ở
J9OỠ ẒẎẎẗ ụ HJ=N ễ N ! D GM < #16A ẒẎẎẗ ụ HJ=N ễ
Releases, stemcells, tracker link and Releases, stemcells, tracker link and documentation all in one place documentation all in one place
OPEN OPEN
pivotaltracker.com/n/projects/956238 pivotaltracker.com/n/projects/956238
VENDORS WILL CATCH UP VENDORS WILL CATCH UP
BOSH SELF-HELP GUIDE BOSH SELF-HELP GUIDE
“Only utter commitment to the task at hand is acceptable” “Only utter commitment to the task at hand is acceptable” It won't be easy, but it will be worth it It won't be easy, but it will be worth it Be willing to become poly-skilled Be willing to become poly-skilled Exploit bosh-lite for acceptance testing Exploit bosh-lite for acceptance testing Try to avoid Windows Try to avoid Windows
THANKYOU. QUESTIONS?
cloudcredo.com cloudcredo.com @ChristHedley @ChristHedley engineerbetter.com engineerbetter.com @EngineerBetter @EngineerBetter