summaryrefslogtreecommitdiff
path: root/src/talks/os-client-config/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'src/talks/os-client-config/index.html')
-rw-r--r--src/talks/os-client-config/index.html242
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>
74openstack \
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>
91export OS_AUTH_URL=https://region-b.geo-1.identity.hpcloudsvc.com:35357/v2.0
92export OS_USERNAME=mordred@inaugust.com
93export OS_PASSWORD=XXXXXXXXXXXXX
94export OS_TENANT_NAME=mordred@inaugust.com
95export 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
11113
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>
144CLOUD_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>
162clouds:
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>
188openstack --cloud=mordred server list
189 </pre>
190 <pre>
191export OS_CLOUD=mordred
192openstack 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>