summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMonty Taylor <mordred@inaugust.com>2017-07-25 06:50:16 +0800
committerMonty Taylor <mordred@inaugust.com>2017-07-25 07:28:09 +0800
commit188a2b337d910878fccb5a2a51298d9d4875d20d (patch)
treedae2ba00c9786c4150118536f1fd7f71f709d635
parent6011e85fef8579b964c93bbf5984bb9edf647990 (diff)
Add Global Interop Talk
-rw-r--r--src/images/Robbie_Williams_Cannes_2015.jpgbin0 -> 61274 bytes
-rw-r--r--src/talks/global-interop.hbs534
2 files changed, 534 insertions, 0 deletions
diff --git a/src/images/Robbie_Williams_Cannes_2015.jpg b/src/images/Robbie_Williams_Cannes_2015.jpg
new file mode 100644
index 0000000..e802301
--- /dev/null
+++ b/src/images/Robbie_Williams_Cannes_2015.jpg
Binary files differ
diff --git a/src/talks/global-interop.hbs b/src/talks/global-interop.hbs
new file mode 100644
index 0000000..c7b4b66
--- /dev/null
+++ b/src/talks/global-interop.hbs
@@ -0,0 +1,534 @@
1<!doctype html>
2<html lang="en">
3
4 <head>
5 <meta charset="utf-8">
6
7 <title>Global OpenStack: the Power of Cloud Interoperability</title>
8
9 </head>
10 <body>
11
12 <section id="who-am-i-redhat" class="slide level2">
13 <h1>Who am I?</h1>
14 <img style="float:right; margin:24pt" src="/images/Logo_RH_CMYK_Default.jpg" />
15 <p> Office of Technology </p>
16 <p> Zuul </p>
17 <p> Ansible </p>
18 </section>
19
20 <section id="who-am-i-openstack" class="slide level2">
21 <h1>Who am I?</h1>
22 <img style="float:right; margin-right:24pt; width:300px; height: auto" src="/images/openstack-cloud-software-vertical-large.png" />
23 <p>Technical Committee</p>
24 <p>Developer Infrastructure Core Team</p>
25 <p>Former Foundation Board of Directors</p>
26 <p>PTL of shade project</p>
27 </section>
28
29 <section class="slide level2">
30 <p>
31 I want to deploy and run an application on the internet
32 so that my customers all over the world can consume it.</p>
33 </section>
34
35 <section class="slide level2">
36 <p>
37 I want to deploy the application across multiple clouds or regions
38 so that my service survives issues in any one of them.</p>
39 </section>
40
41 <section class="slide level2">
42 <p>
43 I want to deploy the application in a location of my choosing
44 so that I can comply with regulatory demands.</p>
45 </section>
46
47 <section class="slide level2">
48 <h1>THIS WORKS</h1>
49 <h3>I'm doing it myself as we speak</h3>
50 <img style="float:right; margin-right:24pt" src="/images/graphite.openstack.org.png"/>
51
52
53 <p class='fragment'>20k VMs per-day</p>
54 <p class='fragment'>20 Cloud Regions in 9 clouds</p>
55 <p class='fragment'>Only using OpenStack APIs</p>
56
57 </section>
58
59 <section id="openstack-infra" data-transition='zoom'>
60 <h1>OpenStack Infra</h1>
61 </section>
62
63 <section id="tooling-automation-and-ci-for-openstack-project" class="slide level2" data-transition='zoom'>
64 <h1>Tooling, Automation and CI for OpenStack Project</h1>
65 </section>
66
67 <section id="developers" class="slide level2" data-transition='zoom'>
68 <h1>2000 Developers</h1>
69 </section>
70
71 <section id="gated-commits" class="slide level2" data-transition='zoom'>
72 <h1>Gated Commits</h1>
73 <p>Every commit is fully integration tested (twice) before landing</p>
74 </section>
75
76 <section id="each-test-runs-on-a-single-use-cloud-slave" class="slide level2" data-transition='zoom'>
77 <h1>Each Test Runs on a Single Use Cloud Slave</h1>
78 <p>This is that "cloud scale out" part</p>
79 </section>
80
81 <section id="kjph" class="slide level2" data-transition='zoom'>
82 <h1>2 kjph</h1>
83 </section>
84
85 <section id="kilo-jobs-per-hour" class="slide level2" data-transition='zoom'>
86 <h1>2 KJPH (kilo-jobs per hour)</h1>
87 </section>
88
89 <section id="our-vms-are-everywhere" class="slide level2">
90 <h1>Our VMs are everywhere</h1>
91 <h3>Public Clouds</h3>
92 <ul>
93 <li>Rackspace: Dallas, Chicago, DC</li>
94 <li>Internap: New Jersey, Montreal</li>
95 <li>OVH: Strassbourg, Gravelines</li>
96 <li>Citycloud: London, Los Angeles, Stockholm</li>
97 </ul>
98 <h3>Managed Private Clouds</h3>
99 <ul>
100 <li>OpenStack Innovation Center: San Antonio</li>
101 <li>Red Hat TripleO: Phoenix</li>
102 </ul>
103 </section>
104
105 <section id="we-also-have-servers" class="slide level2">
106 <h1>Private Cloud</h1>
107 <h2>Infra Cloud</h2>
108 <ul>
109 <li>Hardware donated by HPE: Houston</li>
110 <li>Community run cloud using OpenStack Puppet</li>
111 <li>Bare Metal managed with Bifrost/Ironic</li>
112 </ul>
113 </section>
114
115 <section id="architecture" class="slide level2">
116 <p><img src="/images/infra-zuul-architecture.png" alt="image" /></p>
117 </section>
118
119 <section class="slide level2">
120 <h1>Gerrit</h1>
121 <ul>
122 <li class="fragment">
123 Traditional 'Enterprise' Java Application</li>
124 <li class="fragment">Single Nova VM, Cinder Volume</li>
125 <li class="fragment">Scale out farm of git replicas</li>
126 </ul>
127 </section>
128
129 <section class="slide level2">
130 <h1>nodepool</h1>
131 <ul>
132 <li class="fragment">Cloud Native</li>
133 <li class="fragment">
134 Purpose built in Python</li>
135 <li class="fragment">Keeps a pool of ready to go nodes</li>
136 <li class="fragment">Multi-cloud</li>
137 <li class="fragment">Fully elastic - responds to demand</li>
138 </ul>
139 </section>
140
141 <section class="slide level2">
142 <h1>How do we do this?</h1>
143 </section>
144
145 <section class="slide level2">
146 <h1>Control plane</h1>
147 <h3>http://git.openstack.org/cgit/openstack-infra/system-config</h3>
148 <ul>
149 <li>All server config management in git</li>
150 <li>Puppet manages the servers: puppet apply</li>
151 <li>Ansible runs puppet: ansible puppet module</li>
152 <li>Ansible OpenStack Dynamic Inventory</li>
153 <li>Only thing not public are keys and secrets</li>
154 </ul>
155 </section>
156
157 <section class="slide level2">
158 <h1>os-client-config</h1>
159 <h3>http://git.openstack.org/cgit/openstack/os-client-config</h3>
160 <p>A library to handle config information for openstack clients</p>
161 <p>Tracks differences in vendors that can't be discovered</p>
162 <p>In use in python-openstackclient, shade and ansible</p>
163 </section>
164
165 <section class="slide level2">
166 <h1>os-client-config</h1>
167 <p>~/.config/openstack/clouds.yaml</p>
168 <pre>
169clouds:
170 citycloud:
171 profile: citycloud
172 auth:
173 username: mordred
174 password: XXXXXXXXXXXXXXXXXXXXX
175 project_id: 65222a4d09ea4c68934fa1028c77f394
176 user_domain_id: d0919bd5e8d74e49adf0e145807ffc38
177 project_domain_id: d0919bd5e8d74e49adf0e145807ffc38
178 regions:
179 - Kna1
180 - Sto2
181 - Lon1
182 dreamcompute:
183 profile: dreamhost
184 auth:
185 username: montay6
186 project_name: dhc2111978
187 password: XXXXXXXXXXXXX
188 region_name: RegionOne
189 </pre>
190 </section>
191
192 <section class="slide level2">
193 <h1>shade</h1>
194 <h3>http://git.openstack.org/cgit/openstack-infra/shade</h3>
195 <p>A library to wrap business logic around client libraries</p>
196 <pre>
197cloud.create_image('image-name', filename='image-filename.qcow2')
198cloud.create_server('my-server', image='immage-name', auto_ip=True)
199 </pre>
200 <p>In use in Infra Nodepool and ansible</p>
201 </section>
202
203 <section class="slide level2">
204 <h1>ansible</h1>
205 <p>Based on shade</p>
206 <pre>
207- os_keypair:
208 cloud: citycloud
209 name: mordred
210 public_key_file: ~/.ssh/id_rsa.pub
211- os_image:
212 cloud: citycloud
213 name: Monty Ubuntu
214 file: ubuntu.vhd
215- os_server:
216 cloud: citycloud
217 name: my-server
218 flavor_ram: 1024
219 image: Monty Ubuntu
220 </pre>
221 </section>
222
223 <section class="slide level2">
224 <h1>ansible</h1>
225 <h2>Add my keypair to 30 Regions in 13 clouds<h2>
226 <pre><code>
227- os_keypair:
228 cloud: "{{ item.cloud }}"
229 region_name: "{{ item.region_name }}"
230 name: mordred
231 public_key_file: ~/.ssh/id_rsa.pub
232 with-items:
233 - {cloud: vexxhost, region_name: ca-ymq-1}
234 - {cloud: ovh, region_name: SBG1}
235 - {cloud: ovh, region_name: BHS1}
236 - {cloud: ovh, region_name: GRA1}
237 - {cloud: citycloud, region_name: Buf1}
238 - {cloud: citycloud, region_name: La1}
239 - {cloud: citycloud, region_name: Fra1}
240 - {cloud: citycloud, region_name: Lon1}
241 - {cloud: citycloud, region_name: Sto2}
242 - {cloud: citycloud, region_name: Kna1}
243 - {cloud: internap, region_name: ams01}
244 - {cloud: internap, region_name: da01}
245 - {cloud: internap, region_name: nyj01}
246 - {cloud: internap, region_name: sin01}
247 - {cloud: internap, region_name: sjc01}
248 - {cloud: infracloud, region_name: vanilla}
249 - {cloud: infracloud, region_name: chocolate}
250 - {cloud: fuga, region_name: cystack}
251 - {cloud: datacentred, region_name: sal01}
252 - {cloud: clouda, region_name: regionOne}
253 - {cloud: auro, region_name: van1}
254 - {cloud: ustack, region_name: bj1}
255 - {cloud: zetta, region_name: no-osl1}
256 - {cloud: kiss, region_name: region1}
257 - {cloud: rax, region_name: IAD}
258 - {cloud: rax, region_name: ORD}
259 - {cloud: rax, region_name: SYD}
260 - {cloud: rax, region_name: LON}
261 - {cloud: rax, region_name: DFW}
262 - {cloud: rax, region_name: HKG}
263 </code></pre>
264 </section>
265
266 <section class="slide level2">
267 <h1>nodepool</h1>
268 <ul>
269 <li>Use shade to treat all cloud regions as one giant cloud</li>
270 <li>diskimage-builder makes identical base images for each</li>
271 <li>Pre-cache network artifacts in disk images</li>
272 <li>glean instead of cloud-init to handle no-DHCP on Rackspace</li>
273 <li>Pre-spins warm pool - always keep min-ready number of nodes</li>
274 </ul>
275 </section>
276
277 <section class="slide level2">
278 <h1>OpenStack Works!</h1>
279 <p class='fragment'>Why should you care?</p>
280 <p class='fragment'>Is interop really important?</p>
281 </section>
282
283 <section class="slide level2">
284 <h1>Run what you want</h1>
285 <p class='fragment'>Cloud-native application</p>
286 <p class='fragment'>Traditional Java web application</p>
287 <p class='fragment'>High-performance Database on Baremetal</p>
288 </section>
289
290 <section class="slide level2">
291 <h1>Run it where you want</h1>
292 <ul>
293 <li>Geography</li>
294 <li>Delivery Model</li>
295 </ul>
296
297 </section>
298
299 <section class="slide level2">
300 <h1>Geography</h1>
301 <ul>
302 <li>Put it near your users</li>
303 <li>Don't put it in an US data center</li>
304 <li>Locality Requirements</li>
305 <li class='fragment'>What if you have customers in China?</li>
306 <li class='fragment'>What if you also have customers in Sweden?</li>
307 </ul>
308 </section>
309
310 <section class="slide level2">
311 <h1>Delivery Model</h1>
312 <ul>
313 <li>Public</li>
314 <li>Hosted Private</li>
315 <li>Managed Private On-Premise</li>
316 <li>Run your own</li>
317 </ul>
318 </section>
319
320 <section class="slide level2" data-transition='zoom'>
321 <h1>China’s Sinorail Information Cloud</h1>
322 </section>
323
324 <section class="slide level2" data-transition='zoom'>
325 <h1>Billions of Passengers</h1>
326 </section>
327
328 <section class="slide level2" data-transition='zoom'>
329 <h1>Anybody <em>REALLY</em> think that should just run in a
330 Public Cloud?</h1>
331 </section>
332
333 <section class="slide level2" data-transition='zoom'>
334 <h1>Anybody <em>REALLY</em> think that should run in a
335 Public Cloud owned by a US company?</h1>
336 </section>
337
338 <section class="slide level2" data-transition='zoom'>
339 <h1>What about the China National Offshore Oil Corp?</h1>
340 </section>
341
342 <section class="slide level2" data-transition='zoom'>
343 <h1>or the State Grid of China?</h1>
344 </section>
345
346 <section class="slide level2">
347 <img src="/images/six-years-in.png" />
348 </section>
349
350 <section class="slide level2">
351 <h1>Chinese OpenStack</h1>
352 <p><small>sorted alphabetically</small></p>
353 <p>99 Cloud</p>
354 <p>China Mobile</p>
355 <p>China National Offshore Oil Corp</p>
356 <p>China Telecom</p>
357 <p>China Unicom</p>
358 <p>EasyStack</p>
359 <p>Huawei</p>
360 <p>Inspur</p>
361 <p>Sinorail</p>
362 <p>State Grid of China</p>
363 <p>T2 Cloud</p>
364 <p>Tencent</p>
365 <p>UMCloud</p>
366 <p>UnitedStack</p>
367 <p>ZTE</p>
368 </section>
369
370 <section class="slide level2">
371 <h1>European Public OpenStack</h1>
372 <p>CityCloud: Sweden, UK, US</p>
373 <p>Datacentred: UK</p>
374 <p>Elastx: Sweden</p>
375 <p>Enter Cloud Suite: Italy, Germany</p>
376 <p>Fugo: Netherlands</p>
377 <p>Internap: Netherlands, US, Singapore</p>
378 <p>OTC: Frankfurt</p>
379 <p>OVH: France, US</p>
380 <p>Switch: Switzerland</p>
381 <p>Ultimum: Czech Republic</p>
382 <p>Zetta: Norway</p>
383 <p>kiss.cloud: Netherlands</p>
384 </section>
385
386 <section class="slide level2">
387 <h1>Other Public OpenStack</h1>
388 <p>Auro: Vancouver</p>
389 <p>Catalyst: New Zealand</p>
390 <p>Conoha: Japan, Singapore, US</p>
391 <p>Dreamhost: US</p>
392 <p>Ormuco: Canada + Federated</p>
393 <p>Vexxhost: Canada</p>
394 </section>
395
396 <section class="slide level2">
397 <h1>What about the US?</h1>
398 <img class='fragment'
399 style="float:right; margin:24pt; height:400px; width: auto"
400 src="/images/Robbie_Williams_Cannes_2015.jpg" />
401 <p class='fragment'>Robbie Williams</p>
402 <p class='fragment'>Best-selling British solo artist in the UK</p>
403 <p class='fragment'>Best-selling non-Latino artist in Latin America</p>
404 <p class='fragment'>Basically unknown in the US</p>
405 </section>
406
407 <section class="slide level2">
408 <h1>OpenStack Community is Designed for Collaboration</h1>
409 </section>
410
411 <section class="slide level2">
412 <h1>In the OpenStack Project, all participants are Equal</h1>
413 </section>
414
415 <section class="slide level2">
416 <p><em>We</em> aren't going to remove something <em>you</em> need...</p>
417 <p class='fragement'>because we <em>ARE</em> you.</p>
418 </section>
419
420 <section class="slide level2">
421 <h1>I'm in this to make the world better. The whole world.</h1>
422 </section>
423
424 <section class="slide level2">
425 <h1>Why does Interop Matter</h1>
426 </section>
427
428 <section class="slide level2">
429 <h1>Is Sinorail going to run China's Train system with
430 an app they download from an App Store?<h1>
431 <p class='fragment'>Nope</p>
432 </section>
433
434 <section class="slide level2">
435 <h1>Are they going to let me run VMs for OpenStack Infra
436 Nodepool on their Cloud?</h1>
437 <p class='fragment'>Nope</p>
438 <p class='fragment'><small>That would be SUPER cool though!</small></p>
439 </section>
440
441 <section class="slide level2">
442 <h1>Who cares if China National Offshore Oil Corp, State Grid of China
443 and Deutsche Telecom's clouds work the same?<h1>
444 </section>
445
446 <section class="slide level2">
447 <h1>It's all about the tools</h1>
448 <ul>
449 <li>Ansible</li>
450 <li>Terraform</li>
451 <li>Spinnaker</li>
452 <li>Zuul</li>
453 <li class='fragment'>Zuul v3 is almost out and will blow your mind</li>
454 </ul>
455 </section>
456
457 <section class="slide level2">
458 <h1>It's about spending resources wisely</h1>
459 <p>If China National Offshore Oil Corp, State Grid of China and
460 Sinorail all run Interoperable OpenStack Clouds ...</p>
461 <p>they share not just the OpenStack Cloud software itself... </p>
462 <p>they <em>ALSO</em> share consumption and orchestration software.</p>
463 <p class='fragment'>It's like I work for all of you!</p>
464 <p class='fragment'>It's like we all work with each other</p>
465 </section>
466
467 <section class="slide level2">
468 <h1>China, and the rest of the Global Community, understands the power
469 of collaborating on our shared problems.</h1>
470 </section>
471
472 <section class="slide level2">
473 <h1>What are we doing to help you with Interop?</h1>
474 </section>
475
476 <section class="slide level2">
477 <h1>Interop Working Group</h1>
478 <ul>
479 <li>Trademark focused: What must work to use the name OpenStack</li>
480 <li>If you get some OpenStack from a Vendor, how do you know it's good
481 OpenStack</li>
482 </ul>
483 </section>
484
485 <section class="slide level2">
486 <h1>API Working Group</h1>
487 <ul>
488 <li>Upstream Technical Committee Group</li>
489 <li><a href='http://specs.openstack.org/openstack/api-wg/'>
490 http://specs.openstack.org/openstack/api-wg/</a></li>
491 <li>Started publishing <em>API Consumption</em> guidelines</li>
492 </ul>
493 </section>
494
495 <section class="slide level2">
496 <h1>API Working Group Consumption Specs</h1>
497
498 <ul>
499 <li><a href='http://specs.openstack.org/openstack/api-wg/guidelines/consuming-catalog.html'>
500 Consuming the Catalog: http://specs.openstack.org/openstack/api-wg/guidelines/consuming-catalog.html</a></li>
501 <li><a href='https://review.openstack.org/#/c/459405/'>Version Discovery: https://review.openstack.org/#/c/459405/</a></li>
502 <li><a href='https://service-types.openstack.org/'>Service Types Authority: https://service-types.openstack.org/</a></li>
503 </ul>
504 </section>
505
506 <section class="slide level2">
507 <h1>API Consumers Mailing List</h1>
508 <p><a href='http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-api-consumers'>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-api-consumers</a></p>
509 <p>Collaboration between SDK, Framework, Tool Authors</p>
510 <p>Python, Go, Java, Ruby, Javascript ... </p>
511 </section>
512
513 <section class="slide level2">
514 <h1>Writing Software!</h1>
515 <ul>
516 <li>shade SDK: <a href='https://docs.openstack.org/shade/latest/'>
517 https://docs.openstack.org/shade/latest/</a></li>
518 <li>Ansible OpenStack: <a href='http://docs.ansible.com/ansible/latest/list_of_cloud_modules.html#openstack'>
519 http://docs.ansible.com/ansible/latest/list_of_cloud_modules.html#openstack</a></li>
520 <li>oaktree: Federation API</li>
521 <li>TriCircle: Multi-cloud Networking</li>
522 <li>Zuul: Insanely scalable CI/CD</li>
523 </ul>
524 <p>All of these can use help!</p>
525 </section>
526
527 <section class="slide level2">
528 <h1>OpenStack gives you the power to make the choices that
529 are right for you, your business, your users, your country
530 and the world.</h1>
531 </section>
532
533 </body>
534</html>