blob: 6d6a0851f0a2fc80e253d3d50147c7d0a7a815e0 [file] [log] [blame]
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02001
Ales Komarek231eb652017-04-11 16:01:19 +02002===============
3Horizon Formula
4===============
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02005
Ales Komarek231eb652017-04-11 16:01:19 +02006Horizon is the canonical implementation of OpenStacks Dashboard, which
7provides a web based user interface to OpenStack services including Nova,
8Swift, Keystone, etc.
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02009
Ales Komarek231eb652017-04-11 16:01:19 +020010
11Sample Pillars
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020012==============
13
Ales Komarek2e7d83b2016-11-22 22:58:12 +010014Simplest horizon setup
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020015
Adam Tenglerdbd1f052016-01-25 21:12:26 +010016.. code-block:: yaml
17
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020018 horizon:
19 server:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020020 enabled: true
Ales Komarek2e7d83b2016-11-22 22:58:12 +010021 secret_key: secret
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020022 host:
23 name: cloud.lab.cz
24 cache:
25 engine: 'memcached'
26 host: '127.0.0.1'
27 port: 11211
28 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +020029 api_versions:
30 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020031 identity:
32 engine: 'keystone'
33 host: '127.0.0.1'
34 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020035 mail:
36 host: '127.0.0.1'
37
Dmitry Stremkovskiy381e5602017-07-18 18:50:13 +030038Multidomain setup for horizon
39
40.. code-block:: yaml
41
42 horizon:
43 server:
44 enabled: true
45 default_domain: MYDOMAIN
46 multidomain: True
47
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020048Simple branded horizon
49
Adam Tenglerdbd1f052016-01-25 21:12:26 +010050.. code-block:: yaml
51
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020052 horizon:
53 server:
54 enabled: true
55 branding: 'OpenStack Company Dashboard'
56 default_dashboard: 'admin'
57 help_url: 'http://doc.domain.com'
58
Adam Tengler08874e32017-05-05 17:24:29 +000059Horizon with policy files metadata. With source mine you can obtain real time policy file state from targeted node (OpenStack control node), provided you have policy file published to specified grain key. Source file will obtain static policy definition from formula files directory.
60
61.. code-block:: yaml
62
63 horizon:
64 server:
65 enabled: true
66 policy:
67 identity:
68 source: mine
69 host: ctl01.my-domain.local
70 name: keystone_policy.json
71 grain_name: keystone_policy
72 enabled: true
73 compute:
74 source: file
75 name: nova_policy.json
76 enabled: true
77 network:
78 source: file
79 name: neutron_policy.json
80 enabled: true
81 image:
82 source: file
83 name: glance_policy.json
84 enabled: true
85 volume:
86 source: file
87 name: cinder_policy.json
88 enabled: true
89 telemetry:
90 source: file
91 name: ceilometer_policy.json
92 enabled: true
93 orchestration:
94 source: file
95 name: heat_policy.json
96 enabled: true
Ales Komarek231eb652017-04-11 16:01:19 +020097
98Horizon with enabled SSL security (when SSL is realised by proxy)
99
100.. code-block:: yaml
101
102 horizon:
103 server:
104 enabled: True
105 secure: True
106
107
Adam Tengler250e9b32018-06-26 14:39:31 +0000108Horizon package setup with SSL.
109
110Important: for the sake of backwards compatibility `ssl_no_verify` attribute defaults to True when horizon:server:identity:encryption is set to 'ssl'.
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200111
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100112.. code-block:: yaml
113
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200114 horizon:
115 server:
116 enabled: true
117 secret_key: MEGASECRET
118 version: juno
Adam Tengler250e9b32018-06-26 14:39:31 +0000119 ssl_no_verify: false
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200120 ssl:
121 enabled: true
122 authority: CA_Authority
123 host:
124 name: cloud.lab.cz
125 cache:
126 engine: 'memcached'
127 host: '127.0.0.1'
128 port: 11211
129 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200130 api_versions:
131 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200132 identity:
133 engine: 'keystone'
134 host: '127.0.0.1'
135 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200136 mail:
137 host: '127.0.0.1'
138
Adam Tenglerddef0502017-05-04 11:36:54 +0000139Horizon with custom SESSION_ENGINE (default is "signed_cookies", valid options are: "signed_cookies", "cache", "file") and SESSION_TIMEOUT
140
141.. code-block:: yaml
142
143 horizon:
144 server:
145 enabled: True
146 secure: True
147 session:
148 engine: 'cache'
149 timeout: 43200
150
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200151Multi-regional horizon setup
152
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100153.. code-block:: yaml
154
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200155 horizon:
156 server:
157 enabled: true
158 version: juno
159 secret_key: MEGASECRET
160 cache:
161 engine: 'memcached'
162 host: '127.0.0.1'
163 port: 11211
164 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200165 api_versions:
166 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200167 identity:
168 engine: 'keystone'
169 host: '127.0.0.1'
170 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200171 mail:
172 host: '127.0.0.1'
173 regions:
174 - name: cluster1
175 address: http://cluster1.example.com:5000/v2.0
176 - name: cluster2
177 address: http://cluster2.example.com:5000/v2.0
178
179Horizon setup with sensu plugin
180
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100181.. code-block:: yaml
182
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200183 horizon:
184 server:
185 enabled: true
186 version: juno
187 sensu_api:
188 host: localhost
189 port: 4567
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100190 plugin:
191 monitoring:
192 app: horizon_monitoring
193 source:
194 type: git
195 address: git@repo1.robotice.cz:django/horizon-monitoring.git
196 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200197
198Sensu multi API
199
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100200.. code-block:: yaml
201
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200202 horizon:
203 server:
204 enabled: true
205 version: juno
206 sensu_api:
207 dc1:
208 host: localhost
209 port: 4567
210 dc2:
211 host: anotherhost
212 port: 4567
213
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100214Horizon setup with jenkins plugin
215
216.. code-block:: yaml
217
218 horizon:
219 server:
220 enabled: true
221 version: juno
222 jenkins_api:
223 url: https://localhost:8080
224 user: admin
225 password: pwd
226 plugin:
227 jenkins:
228 app: horizon_jenkins
229 source:
230 type: pkg
231
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200232Horizon setup with billometer plugin
233
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100234.. code-block:: yaml
235
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200236 horizon:
237 server:
238 enabled: true
239 version: juno
240 billometer_api:
241 host: localhost
242 port: 9753
243 api_version: 1
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100244 plugin:
245 billing:
246 app: horizon_billing
247 source:
248 type: git
249 address: git@repo1.robotice.cz:django/horizon-billing.git
250 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200251
252Horizon setup with contrail plugin
253
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100254.. code-block:: yaml
255
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200256 horizon:
257 server:
258 enabled: true
259 version: icehouse
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100260 plugin:
261 contrail:
262 app: contrail_openstack_dashboard
263 override: true
264 source:
265 type: git
266 address: git@repo1.robotice.cz:django/horizon-contrail.git
267 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200268
269Horizon setup with sentry log handler
270
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100271.. code-block:: yaml
272
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200273 horizon:
274 server:
275 enabled: true
276 version: juno
277 ...
278 logging:
279 engine: raven
280 dsn: http://pub:private@sentry1.test.cz/2
281
282Multisite with Git source
283-------------------------
284
285Simple Horizon setup from git repository
286
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100287.. code-block:: yaml
288
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200289 horizon:
290 server:
291 enabled: true
292 app:
293 default:
294 secret_key: MEGASECRET
295 source:
296 engine: git
297 address: https://github.com/openstack/horizon.git
298 rev: stable/havana
299 cache:
300 engine: 'memcached'
301 host: '127.0.0.1'
302 port: 11211
303 prefix: 'CACHE_DEFAULT'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200304 api_versions:
305 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200306 identity:
307 engine: 'keystone'
308 host: '127.0.0.1'
309 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200310 mail:
311 host: '127.0.0.1'
312
313Themed multisite setup
314
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100315.. code-block:: yaml
316
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200317 horizon:
318 server:
319 enabled: true
320 app:
321 openstack1c:
322 secret_key: MEGASECRET1
323 source:
324 engine: git
325 address: https://github.com/openstack/horizon.git
326 rev: stable/havana
327 plugin:
328 contrail:
329 app: contrail_openstack_dashboard
330 override: true
331 source:
332 type: git
333 address: git@repo1.robotice.cz:django/horizon-contrail.git
334 rev: develop
335 theme:
336 app: site1_theme
337 source:
338 type: git
339 address: git@repo1.domain.com:django/horizon-site1-theme.git
340 cache:
341 engine: 'memcached'
342 host: '127.0.0.1'
343 port: 11211
344 prefix: 'CACHE_SITE1'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200345 api_versions:
346 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200347 identity:
348 engine: 'keystone'
349 host: '127.0.0.1'
350 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200351 mail:
352 host: '127.0.0.1'
353 openstack2:
354 secret_key: MEGASECRET2
355 source:
356 engine: git
357 address: https://repo1.domain.com/openstack/horizon.git
358 rev: stable/icehouse
359 plugin:
360 contrail:
361 app: contrail_openstack_dashboard
362 override: true
363 source:
364 type: git
365 address: git@repo1.domain.com:django/horizon-contrail.git
366 rev: develop
367 monitoring:
368 app: horizon_monitoring
369 source:
370 type: git
371 address: git@domain.com:django/horizon-monitoring.git
372 rev: develop
373 theme:
374 app: bootswatch_theme
375 source:
376 type: git
377 address: git@repo1.robotice.cz:django/horizon-bootswatch-theme.git
378 rev: develop
379 cache:
380 engine: 'memcached'
381 host: '127.0.0.1'
382 port: 11211
383 prefix: 'CACHE_SITE2'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200384 api_versions:
385 identity: 3
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200386 identity:
387 engine: 'keystone'
388 host: '127.0.0.1'
389 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200390 mail:
391 host: '127.0.0.1'
392
Adam Tengler383e5712018-06-26 20:09:54 +0000393Set advanced theme options (for Horizon version Mitaka and newer).
394
395Full example:
396
397.. code-block:: yaml
398
399 horizon:
400 server:
401 themes:
402 default: default # optional, default: "default"
403 directory: themes # optional, default: "themes"
404 cookie_name: theme # optional, default: "theme"
405 available:
406 default: # slug
407 name: "Default" # display name
408 description: "Default style theme"
409 path: "themes/default" # optional, default: "<directory>/<slug>", e.g. "themes/default"
410 enabled: True
411 material:
412 name: "Material"
413 description: "Google's Material Design style theme"
414 path: "themes/material"
415 enabled: True
416
417Minimal example:
418
419.. code-block:: yaml
420
421 horizon:
422 server:
423 theme:
424 available:
425 default: # slug
426 name: "Default" # display name
427 description: "Default style theme"
428 material:
429 name: "Material"
430 description: "Google's Material Design style theme"
431
432
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200433API versions override
434
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100435.. code-block:: yaml
436
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200437 horizon:
438 server:
439 enabled: true
440 app:
441 openstack_api_overrride:
442 secret_key: MEGASECRET1
443 api_versions:
444 identity: 3
445 volume: 2
446 source:
447 engine: git
448 address: https://github.com/openstack/horizon.git
449 rev: stable/havana
450
451Control dashboard behaviour
452
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100453.. code-block:: yaml
454
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200455 horizon:
456 server:
457 enabled: true
458 app:
459 openstack_dashboard_overrride:
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100460 secret_key: password
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200461 dashboards:
462 settings:
463 enabled: true
464 project:
465 enabled: false
466 order: 10
467 admin:
468 enabled: false
469 order: 20
470 source:
471 engine: git
472 address: https://github.com/openstack/horizon.git
473 rev: stable/juno
474
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700475Enable WebSSO feature. Define a list of choices [supported choices: oidc, saml2], `credentials` choice will be automatically appended and choice description is predefined. DEPRECATED
476
477WebSSO with credentials and saml2
Alexander Noskov787a8122016-12-07 13:00:49 +0400478
479.. code-block:: yaml
480
481 horizon:
482 server:
483 enabled: true
484 websso:
485 login_url: "WEBROOT + 'auth/login/'"
486 logout_url: "WEBROOT + 'auth/logout/'"
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700487 login_redirect_url: "WEBROOT + 'project/'"
Alexander Noskov787a8122016-12-07 13:00:49 +0400488 websso_choices:
489 - saml2
Alexander Noskov787a8122016-12-07 13:00:49 +0400490
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700491Enable WebSSO feature. Define a map of choices in the following format: `{"<choice_name>": {"description": "<choice_description>"}`.
492
493WebSSO with saml2 and credentials
494
495.. code-block:: yaml
496
497 horizon:
498 server:
499 enabled: true
500 websso:
501 login_url: "WEBROOT + 'auth/login/'"
502 logout_url: "WEBROOT + 'auth/logout/'"
503 login_redirect_url: "WEBROOT + 'project/'"
504 websso_choices:
505 saml2:
506 description: "Security Assertion Markup Language"
507 credentials:
508 description: "Keystone Credentials"
509
510WebSSO with IDP mapping.
511
512.. code-block:: yaml
513
514 horizon:
515 server:
516 enabled: true
517 websso:
518 login_url: "WEBROOT + 'auth/login/'"
519 logout_url: "WEBROOT + 'auth/logout/'"
520 login_redirect_url: "WEBROOT + 'project/'"
521 websso_choices:
522 credentials:
523 description: "Keystone Credentials"
524 saml2:
525 description: "Security Assertion Markup Language"
526 oidc:
527 description: "OpenID Connect"
528 myidp_oidc:
529 description: "Acme Corporation - OpenID Connect"
530 myidp_saml2:
531 description: "Acme Corporation - SAML2"
532 idp_mapping:
533 myidp_oidc:
534 id: myidp
535 protocol: oidc
536 myidp_saml2:
537 id: myidp
538 protocol: saml2
Ales Komarek231eb652017-04-11 16:01:19 +0200539
540More Information
541================
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200542
543* https://github.com/openstack/horizon
544* http://dijks.wordpress.com/2012/07/06/how-to-change-screen-resolution-of-novnc-client-in-openstack-essex-dashboard-nova-horizon/
Filip Pytloun219343c2017-02-02 13:02:03 +0100545
Ales Komarek231eb652017-04-11 16:01:19 +0200546
Filip Pytloun219343c2017-02-02 13:02:03 +0100547Documentation and Bugs
548======================
549
550To learn how to install and update salt-formulas, consult the documentation
551available online at:
552
553 http://salt-formulas.readthedocs.io/
554
555In the unfortunate event that bugs are discovered, they should be reported to
556the appropriate issue tracker. Use Github issue tracker for specific salt
557formula:
558
559 https://github.com/salt-formulas/salt-formula-horizon/issues
560
561For feature requests, bug reports or blueprints affecting entire ecosystem,
562use Launchpad salt-formulas project:
563
564 https://launchpad.net/salt-formulas
565
566You can also join salt-formulas-users team and subscribe to mailing list:
567
568 https://launchpad.net/~salt-formulas-users
569
570Developers wishing to work on the salt-formulas projects should always base
571their work on master branch and submit pull request against specific formula.
572
573 https://github.com/salt-formulas/salt-formula-horizon
574
575Any questions or feedback is always welcome so feel free to join our IRC
576channel:
577
578 #salt-formulas @ irc.freenode.net