diff options
Diffstat (limited to 'src/talks/os-client-config')
-rw-r--r-- | src/talks/os-client-config/index.html | 242 |
1 files changed, 242 insertions, 0 deletions
diff --git a/src/talks/os-client-config/index.html b/src/talks/os-client-config/index.html new file mode 100644 index 0000000..04ef2fd --- /dev/null +++ b/src/talks/os-client-config/index.html | |||
@@ -0,0 +1,242 @@ | |||
1 | <!doctype html> | ||
2 | <html lang="en"> | ||
3 | |||
4 | <head> | ||
5 | <meta charset="utf-8"> | ||
6 | |||
7 | <title>os-client-config: Making OpenStack usability easier, starting with client configuration</title> | ||
8 | |||
9 | <meta name="apple-mobile-web-app-capable" content="yes" /> | ||
10 | <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" /> | ||
11 | |||
12 | <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> | ||
13 | |||
14 | <link rel="stylesheet" href="/css/reveal.css"> | ||
15 | <link rel="stylesheet" href="/css/theme/openstack.css" id="theme"> | ||
16 | |||
17 | <!-- For syntax highlighting --> | ||
18 | <link rel="stylesheet" href="/lib/css/zenburn.css"> | ||
19 | |||
20 | <!-- If the query includes 'print-pdf', include the PDF print sheet --> | ||
21 | <script> | ||
22 | if( window.location.search.match( /print-pdf/gi ) ) { | ||
23 | var link = document.createElement( 'link' ); | ||
24 | link.rel = 'stylesheet'; | ||
25 | link.type = 'text/css'; | ||
26 | link.href = '/css/print/pdf.css'; | ||
27 | document.getElementsByTagName( 'head' )[0].appendChild( link ); | ||
28 | } | ||
29 | </script> | ||
30 | |||
31 | </head> | ||
32 | <body> | ||
33 | |||
34 | <div class="background"></div> | ||
35 | |||
36 | <div class="reveal"> | ||
37 | <div class="slides"> | ||
38 | |||
39 | <section data-state="cover"> | ||
40 | <h1><span xmlns:dct="http://purl.org/dc/terms/" | ||
41 | href="http://purl.org/dc/dcmitype/InteractiveResource" | ||
42 | property="dct:title" | ||
43 | rel="dct:type"> | ||
44 | os-client-config | ||
45 | </span></h1> | ||
46 | <h3 xmlns:cc="http://creativecommons.org/ns#" | ||
47 | property="cc:attributionName">Monty Taylor</h3> | ||
48 | <h4><a xmlns:cc="http://creativecommons.org/ns#" | ||
49 | rel="cc:attributionURL" | ||
50 | href='http://inaugust.com/talks/os-client-config.html'>http://inaugust.com/talks/os-client-config.html</a> </h4> | ||
51 | <h3> twitter: @e_monty </h3> | ||
52 | </section> | ||
53 | |||
54 | <section> | ||
55 | <h1>I'm awash in cloud accounts</h1> | ||
56 | <ul> | ||
57 | <li>Infra has 5<ul> | ||
58 | <li>control plane and nodepool in 3 Rackspace regions</li> | ||
59 | <li>control plane and nodepool in HP</li> | ||
60 | </ul></li> | ||
61 | <li>two personal on HP and one on Rackspace</li> | ||
62 | <li>two internal HP accounts</li> | ||
63 | <li>That's 12 OpenStack cloud-regions</li> | ||
64 | </ul> | ||
65 | </section> | ||
66 | |||
67 | <section> | ||
68 | How do I connect to them? | ||
69 | </section> | ||
70 | |||
71 | <section> | ||
72 | List Servers | ||
73 | <pre> | ||
74 | openstack \ | ||
75 | --auth-url=https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0 \ | ||
76 | --username=mordred@inaugust.com \ | ||
77 | --password=XXXXXX \ | ||
78 | --project-name=mordred@inaugust.com \ | ||
79 | --region-name=region-b.geo-1 \ | ||
80 | server list | ||
81 | </pre> | ||
82 | </section> | ||
83 | |||
84 | <section> | ||
85 | Well that's silly | ||
86 | </section> | ||
87 | |||
88 | <section> | ||
89 | Consistent Environment Variables | ||
90 | <pre> | ||
91 | export OS_AUTH_URL=https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0 | ||
92 | export OS_USERNAME=mordred@inaugust.com | ||
93 | export OS_PASSWORD=XXXXXXXXXXXXX | ||
94 | export OS_TENANT_NAME=mordred@inaugust.com | ||
95 | export OS_REGION_NAME=region-b.geo-1 | ||
96 | </pre> | ||
97 | </section> | ||
98 | |||
99 | <section> | ||
100 | 12 shell script snippet files | ||
101 | </section> | ||
102 | |||
103 | <section> | ||
104 | ENV processing is in command line tools, not client libraries | ||
105 | </section> | ||
106 | |||
107 | <section> | ||
108 | ENV processing is just copied everywhere | ||
109 | <pre> | ||
110 | $ egrep -r 'add_(option|argument).*os-username' openstack/python*client | wc -l | ||
111 | 13 | ||
112 | </pre> | ||
113 | </section> | ||
114 | |||
115 | <section> | ||
116 | <h1> Pre-existing knowledge </h1> | ||
117 | <ul> | ||
118 | <li>auth-url</li> | ||
119 | <li>glance API version</li> | ||
120 | <li>override settings<ul> | ||
121 | <li>URLs (swift URL in rackspace keystone catalog is wrong)</li> | ||
122 | <li>service types (DNS in HP is hpext:dns)</li> | ||
123 | </ul></li> | ||
124 | </ul> | ||
125 | </section> | ||
126 | |||
127 | <section> | ||
128 | <p>I wrote a library (yay!)</p> | ||
129 | <h1>os-client-config</h1> | ||
130 | </section> | ||
131 | |||
132 | <section> | ||
133 | <h1>Processes, in this order</h1> | ||
134 | <ul> | ||
135 | <li>config file: clouds.yaml</li> | ||
136 | <li>env vars</li> | ||
137 | <li>command line args</li> | ||
138 | </ul> | ||
139 | </section> | ||
140 | |||
141 | <section> | ||
142 | <h1>Provides vendor defaults</h1> | ||
143 | <pre> | ||
144 | CLOUD_DEFAULTS = dict( | ||
145 | hp=dict( | ||
146 | auth_url='https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0', | ||
147 | dns_service_type='hpext:dns', | ||
148 | ), | ||
149 | rackspace=dict( | ||
150 | auth_url='https://identity.api.rackspacecloud.com/v2.0/', | ||
151 | database_service_type='rax:database', | ||
152 | image_api_version='2', | ||
153 | ) | ||
154 | ) | ||
155 | </pre> | ||
156 | <p> Patches welcome for any cloud </p> | ||
157 | </section> | ||
158 | |||
159 | <section> | ||
160 | <h1>clouds.yaml</h1> | ||
161 | <pre> | ||
162 | clouds: | ||
163 | mordred: | ||
164 | cloud: hp | ||
165 | username: mordred@inaugust.com | ||
166 | password: XXXXXXXXXX | ||
167 | project_name: mordred@inaugust.com | ||
168 | region_name: region-b.geo-1 | ||
169 | monty: | ||
170 | cloud: https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0 | ||
171 | username: monty.taylor@hp.com | ||
172 | password: XXXXXXXXX | ||
173 | project_name: monty.taylor@hp.com-default-tenant | ||
174 | region_name: region-b.geo-1 | ||
175 | dns_service_type: hpext:dns | ||
176 | rax: | ||
177 | cloud: rackspace | ||
178 | username: openstackci | ||
179 | password: XXXXXXX | ||
180 | project_id: 610275 | ||
181 | region_name: DFW,ORD,IAD | ||
182 | </pre> | ||
183 | </section> | ||
184 | |||
185 | <section> | ||
186 | <h1> Allows for named clouds </h1> | ||
187 | <pre> | ||
188 | openstack --cloud=mordred server list | ||
189 | </pre> | ||
190 | <pre> | ||
191 | export OS_CLOUD=mordred | ||
192 | openstack server list | ||
193 | </pre> | ||
194 | </section> | ||
195 | |||
196 | |||
197 | <section> | ||
198 | <h1> Where is it in use? </h1> | ||
199 | <ul> | ||
200 | <li>Shade library</li> | ||
201 | <li>python-openstackclient <small>(patch in flight)</small></li> | ||
202 | <li>ansible <small>(patch in flight)</small></li> | ||
203 | </ul> | ||
204 | </section> | ||
205 | |||
206 | <section> | ||
207 | <h1>Where is it?</h1> | ||
208 | <p>http://git.openstack.org/stackforge/os-client-config</p> | ||
209 | <p>http://pypi.python.org/pypi/os-client-config</p> | ||
210 | </section> | ||
211 | |||
212 | <section> | ||
213 | <h1>Where is it?</h1> | ||
214 | <p>http://git.openstack.org/stackforge/os-client-config</p> | ||
215 | <p>http://pypi.python.org/pypi/os-client-config</p> | ||
216 | </section> | ||
217 | |||
218 | </div> | ||
219 | |||
220 | <div class="footer"> | ||
221 | <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"> | ||
222 | <img alt="Creative Commons License" | ||
223 | style="border-width:0" | ||
224 | src="https://i.creativecommons.org/l/by/4.0/88x31.png" /> | ||
225 | </a><br /> | ||
226 | Licensed under a | ||
227 | <a rel="license" | ||
228 | href="http://creativecommons.org/licenses/by/4.0/"> | ||
229 | Creative Commons Attribution 4.0 International License | ||
230 | </a>. | ||
231 | <br /> | ||
232 | Source code available at <a href='http://git.inaugust.com/cgit/inaugust.com'>http://git.inaugust.com/cgit/inaugust.com</a> | ||
233 | </div> | ||
234 | </div> | ||
235 | |||
236 | <script src="/lib/js/head.min.js"></script> | ||
237 | <script src="/js/reveal.js"></script> | ||
238 | |||
239 | <script src="/js/this.js"></script> | ||
240 | |||
241 | </body> | ||
242 | </html> | ||