blob: b1f4327c7ca2381c6aa5bf861906244fda33d9d6 [file] [log] [blame]
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02001
OlgaGusarenko8c33bca2018-07-30 18:33:34 +03002=====
3Usage
4=====
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02005
OlgaGusarenko8c33bca2018-07-30 18:33:34 +03006Horizon is the canonical implementation of OpenStack Dashboard, which
7provides a web-based user interface to OpenStack services including Nova,
Ales Komarek231eb652017-04-11 16:01:19 +02008Swift, Keystone, etc.
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +02009
Ales Komarek231eb652017-04-11 16:01:19 +020010Sample Pillars
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020011==============
12
OlgaGusarenko8c33bca2018-07-30 18:33:34 +030013Simplest Horizon setup:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020014
Adam Tenglerdbd1f052016-01-25 21:12:26 +010015.. code-block:: yaml
16
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020017 horizon:
18 server:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020019 enabled: true
Ales Komarek2e7d83b2016-11-22 22:58:12 +010020 secret_key: secret
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020021 host:
22 name: cloud.lab.cz
23 cache:
24 engine: 'memcached'
25 host: '127.0.0.1'
26 port: 11211
27 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +020028 api_versions:
29 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020030 identity:
31 engine: 'keystone'
32 host: '127.0.0.1'
33 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020034 mail:
35 host: '127.0.0.1'
36
OlgaGusarenko8c33bca2018-07-30 18:33:34 +030037Multidomain setup for Horizon:
Dmitry Stremkovskiy381e5602017-07-18 18:50:13 +030038
39.. code-block:: yaml
40
41 horizon:
42 server:
43 enabled: true
44 default_domain: MYDOMAIN
45 multidomain: True
46
OlgaGusarenko8c33bca2018-07-30 18:33:34 +030047Simple branded Horizon:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020048
Adam Tenglerdbd1f052016-01-25 21:12:26 +010049.. code-block:: yaml
50
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +020051 horizon:
52 server:
53 enabled: true
54 branding: 'OpenStack Company Dashboard'
55 default_dashboard: 'admin'
56 help_url: 'http://doc.domain.com'
57
OlgaGusarenko8c33bca2018-07-30 18:33:34 +030058Horizon with policy files metadata. With source mine you can obtain real
59time policy file state from targeted node (OpenStack control node),
60provided you have policy file published to specified grain key. Source
61file will obtain static policy definition from formula files directory.
Adam Tengler08874e32017-05-05 17:24:29 +000062
63.. code-block:: yaml
64
65 horizon:
66 server:
67 enabled: true
68 policy:
69 identity:
70 source: mine
71 host: ctl01.my-domain.local
72 name: keystone_policy.json
73 grain_name: keystone_policy
74 enabled: true
75 compute:
76 source: file
77 name: nova_policy.json
78 enabled: true
79 network:
80 source: file
81 name: neutron_policy.json
82 enabled: true
83 image:
84 source: file
85 name: glance_policy.json
86 enabled: true
87 volume:
88 source: file
89 name: cinder_policy.json
90 enabled: true
91 telemetry:
92 source: file
93 name: ceilometer_policy.json
94 enabled: true
95 orchestration:
96 source: file
97 name: heat_policy.json
98 enabled: true
Ales Komarek231eb652017-04-11 16:01:19 +020099
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300100Horizon with enabled SSL security (when SSL is realised by proxy):
Ales Komarek231eb652017-04-11 16:01:19 +0200101
102.. code-block:: yaml
103
104 horizon:
105 server:
106 enabled: True
107 secure: True
108
109
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300110Horizon package setup with SSL:
Adam Tengler250e9b32018-06-26 14:39:31 +0000111
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300112.. important:: For the sake of backwards compatibility, the ``ssl_no_verify``
113 attribute defaults to ``true`` when
114 ``horizon:server:identity:encryption`` is set to ``'ssl'``.
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200115
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100116.. code-block:: yaml
117
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200118 horizon:
119 server:
120 enabled: true
121 secret_key: MEGASECRET
122 version: juno
Adam Tengler250e9b32018-06-26 14:39:31 +0000123 ssl_no_verify: false
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200124 ssl:
125 enabled: true
126 authority: CA_Authority
127 host:
128 name: cloud.lab.cz
129 cache:
130 engine: 'memcached'
131 host: '127.0.0.1'
132 port: 11211
133 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200134 api_versions:
135 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200136 identity:
137 engine: 'keystone'
138 host: '127.0.0.1'
139 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200140 mail:
141 host: '127.0.0.1'
142
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300143Horizon with custom ``SESSION_ENGINE`` (default is
144``signed_cookies``, valid options are: ``signed_cookies``,
145``cache``, ``file``) and ``SESSION_TIMEOUT``:
Adam Tenglerddef0502017-05-04 11:36:54 +0000146
147.. code-block:: yaml
148
149 horizon:
150 server:
151 enabled: True
152 secure: True
153 session:
154 engine: 'cache'
155 timeout: 43200
156
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300157Multi-regional Horizon setup:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200158
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100159.. code-block:: yaml
160
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200161 horizon:
162 server:
163 enabled: true
164 version: juno
165 secret_key: MEGASECRET
166 cache:
167 engine: 'memcached'
168 host: '127.0.0.1'
169 port: 11211
170 prefix: 'CACHE_HORIZON'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200171 api_versions:
172 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200173 identity:
174 engine: 'keystone'
175 host: '127.0.0.1'
176 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200177 mail:
178 host: '127.0.0.1'
179 regions:
180 - name: cluster1
181 address: http://cluster1.example.com:5000/v2.0
182 - name: cluster2
183 address: http://cluster2.example.com:5000/v2.0
184
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300185Horizon setup with sensu plugin:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200186
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100187.. code-block:: yaml
188
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200189 horizon:
190 server:
191 enabled: true
192 version: juno
193 sensu_api:
194 host: localhost
195 port: 4567
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100196 plugin:
197 monitoring:
198 app: horizon_monitoring
199 source:
200 type: git
201 address: git@repo1.robotice.cz:django/horizon-monitoring.git
202 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200203
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300204Sensu multi API:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200205
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100206.. code-block:: yaml
207
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200208 horizon:
209 server:
210 enabled: true
211 version: juno
212 sensu_api:
213 dc1:
214 host: localhost
215 port: 4567
216 dc2:
217 host: anotherhost
218 port: 4567
219
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300220Horizon setup with jenkins plugin:
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100221
222.. code-block:: yaml
223
224 horizon:
225 server:
226 enabled: true
227 version: juno
228 jenkins_api:
229 url: https://localhost:8080
230 user: admin
231 password: pwd
232 plugin:
233 jenkins:
234 app: horizon_jenkins
235 source:
236 type: pkg
237
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300238Horizon setup with billometer plugin:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200239
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100240.. code-block:: yaml
241
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200242 horizon:
243 server:
244 enabled: true
245 version: juno
246 billometer_api:
247 host: localhost
248 port: 9753
249 api_version: 1
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100250 plugin:
251 billing:
252 app: horizon_billing
253 source:
254 type: git
255 address: git@repo1.robotice.cz:django/horizon-billing.git
256 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200257
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300258Horizon setup with Contrail plugin:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200259
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100260.. code-block:: yaml
261
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200262 horizon:
263 server:
264 enabled: true
265 version: icehouse
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100266 plugin:
267 contrail:
268 app: contrail_openstack_dashboard
269 override: true
270 source:
271 type: git
272 address: git@repo1.robotice.cz:django/horizon-contrail.git
273 rev: develop
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200274
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300275Horizon setup with sentry log handler:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200276
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100277.. code-block:: yaml
278
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200279 horizon:
280 server:
281 enabled: true
282 version: juno
283 ...
284 logging:
285 engine: raven
286 dsn: http://pub:private@sentry1.test.cz/2
287
288Multisite with Git source
289-------------------------
290
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300291Simple Horizon setup from Git repository:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200292
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100293.. code-block:: yaml
294
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200295 horizon:
296 server:
297 enabled: true
298 app:
299 default:
300 secret_key: MEGASECRET
301 source:
302 engine: git
303 address: https://github.com/openstack/horizon.git
304 rev: stable/havana
305 cache:
306 engine: 'memcached'
307 host: '127.0.0.1'
308 port: 11211
309 prefix: 'CACHE_DEFAULT'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200310 api_versions:
311 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200312 identity:
313 engine: 'keystone'
314 host: '127.0.0.1'
315 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200316 mail:
317 host: '127.0.0.1'
318
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300319Themed multisite setup:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200320
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100321.. code-block:: yaml
322
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200323 horizon:
324 server:
325 enabled: true
326 app:
327 openstack1c:
328 secret_key: MEGASECRET1
329 source:
330 engine: git
331 address: https://github.com/openstack/horizon.git
332 rev: stable/havana
333 plugin:
334 contrail:
335 app: contrail_openstack_dashboard
336 override: true
337 source:
338 type: git
339 address: git@repo1.robotice.cz:django/horizon-contrail.git
340 rev: develop
341 theme:
342 app: site1_theme
343 source:
344 type: git
345 address: git@repo1.domain.com:django/horizon-site1-theme.git
346 cache:
347 engine: 'memcached'
348 host: '127.0.0.1'
349 port: 11211
350 prefix: 'CACHE_SITE1'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200351 api_versions:
352 identity: 2
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200353 identity:
354 engine: 'keystone'
355 host: '127.0.0.1'
356 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200357 mail:
358 host: '127.0.0.1'
359 openstack2:
360 secret_key: MEGASECRET2
361 source:
362 engine: git
363 address: https://repo1.domain.com/openstack/horizon.git
364 rev: stable/icehouse
365 plugin:
366 contrail:
367 app: contrail_openstack_dashboard
368 override: true
369 source:
370 type: git
371 address: git@repo1.domain.com:django/horizon-contrail.git
372 rev: develop
373 monitoring:
374 app: horizon_monitoring
375 source:
376 type: git
377 address: git@domain.com:django/horizon-monitoring.git
378 rev: develop
379 theme:
380 app: bootswatch_theme
381 source:
382 type: git
383 address: git@repo1.robotice.cz:django/horizon-bootswatch-theme.git
384 rev: develop
385 cache:
386 engine: 'memcached'
387 host: '127.0.0.1'
388 port: 11211
389 prefix: 'CACHE_SITE2'
Oleksii Chupryn7d3d6482017-03-07 11:23:27 +0200390 api_versions:
391 identity: 3
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200392 identity:
393 engine: 'keystone'
394 host: '127.0.0.1'
395 port: 5000
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200396 mail:
397 host: '127.0.0.1'
398
Adam Tengler383e5712018-06-26 20:09:54 +0000399Set advanced theme options (for Horizon version Mitaka and newer).
400
401Full example:
402
403.. code-block:: yaml
404
405 horizon:
406 server:
407 themes:
408 default: default # optional, default: "default"
409 directory: themes # optional, default: "themes"
410 cookie_name: theme # optional, default: "theme"
411 available:
412 default: # slug
413 name: "Default" # display name
414 description: "Default style theme"
415 path: "themes/default" # optional, default: "<directory>/<slug>", e.g. "themes/default"
416 enabled: True
417 material:
418 name: "Material"
419 description: "Google's Material Design style theme"
420 path: "themes/material"
421 enabled: True
422
423Minimal example:
424
425.. code-block:: yaml
426
427 horizon:
428 server:
429 theme:
430 available:
431 default: # slug
432 name: "Default" # display name
433 description: "Default style theme"
434 material:
435 name: "Material"
436 description: "Google's Material Design style theme"
437
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300438API versions override:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200439
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100440.. code-block:: yaml
441
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200442 horizon:
443 server:
444 enabled: true
445 app:
446 openstack_api_overrride:
447 secret_key: MEGASECRET1
448 api_versions:
449 identity: 3
450 volume: 2
451 source:
452 engine: git
453 address: https://github.com/openstack/horizon.git
454 rev: stable/havana
455
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300456Control dashboard behavior:
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200457
Adam Tenglerdbd1f052016-01-25 21:12:26 +0100458.. code-block:: yaml
459
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200460 horizon:
461 server:
462 enabled: true
463 app:
464 openstack_dashboard_overrride:
Ales Komarek2e7d83b2016-11-22 22:58:12 +0100465 secret_key: password
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200466 dashboards:
467 settings:
468 enabled: true
469 project:
470 enabled: false
471 order: 10
472 admin:
473 enabled: false
474 order: 20
475 source:
476 engine: git
477 address: https://github.com/openstack/horizon.git
478 rev: stable/juno
479
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300480Enable WebSSO feature. Define a list of choices
481[supported choices: oidc, saml2], ``credentials`` choice
482will be automatically appended and choice description is
483predefined. DEPRECATED
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700484
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300485WebSSO with credentials and saml2:
Alexander Noskov787a8122016-12-07 13:00:49 +0400486
487.. code-block:: yaml
488
489 horizon:
490 server:
491 enabled: true
492 websso:
493 login_url: "WEBROOT + 'auth/login/'"
494 logout_url: "WEBROOT + 'auth/logout/'"
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700495 login_redirect_url: "WEBROOT + 'project/'"
Alexander Noskov787a8122016-12-07 13:00:49 +0400496 websso_choices:
497 - saml2
Alexander Noskov787a8122016-12-07 13:00:49 +0400498
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300499Enable WebSSO feature. Define a map of choices in the following
500format: ``{"<choice_name>": {"description": "<choice_description>"}``.
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700501
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300502WebSSO with saml2 and credentials:
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700503
504.. code-block:: yaml
505
506 horizon:
507 server:
508 enabled: true
509 websso:
510 login_url: "WEBROOT + 'auth/login/'"
511 logout_url: "WEBROOT + 'auth/logout/'"
512 login_redirect_url: "WEBROOT + 'project/'"
513 websso_choices:
514 saml2:
515 description: "Security Assertion Markup Language"
516 credentials:
517 description: "Keystone Credentials"
518
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300519WebSSO with IDP mapping:
Aleksieiev, Oleksii318d9de2018-05-18 16:37:18 -0700520
521.. code-block:: yaml
522
523 horizon:
524 server:
525 enabled: true
526 websso:
527 login_url: "WEBROOT + 'auth/login/'"
528 logout_url: "WEBROOT + 'auth/logout/'"
529 login_redirect_url: "WEBROOT + 'project/'"
530 websso_choices:
531 credentials:
532 description: "Keystone Credentials"
533 saml2:
534 description: "Security Assertion Markup Language"
535 oidc:
536 description: "OpenID Connect"
537 myidp_oidc:
538 description: "Acme Corporation - OpenID Connect"
539 myidp_saml2:
540 description: "Acme Corporation - SAML2"
541 idp_mapping:
542 myidp_oidc:
543 id: myidp
544 protocol: oidc
545 myidp_saml2:
546 id: myidp
547 protocol: saml2
Ales Komarek231eb652017-04-11 16:01:19 +0200548
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300549Read more
550=========
Filip Pytlounf8a1d5b2015-10-06 16:28:32 +0200551
552* https://github.com/openstack/horizon
553* 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 +0100554
Ales Komarek231eb652017-04-11 16:01:19 +0200555
Filip Pytloun219343c2017-02-02 13:02:03 +0100556Documentation and Bugs
557======================
558
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300559* http://salt-formulas.readthedocs.io/
560 Learn how to install and update salt-formulas
Filip Pytloun219343c2017-02-02 13:02:03 +0100561
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300562* https://github.com/salt-formulas/salt-formula-horizon/issues
563 In the unfortunate event that bugs are discovered, report the issue to the
564 appropriate issue tracker. Use the Github issue tracker for a specific salt
565 formula
Filip Pytloun219343c2017-02-02 13:02:03 +0100566
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300567* https://launchpad.net/salt-formulas
568 For feature requests, bug reports, or blueprints affecting the entire
569 ecosystem, use the Launchpad salt-formulas project
Filip Pytloun219343c2017-02-02 13:02:03 +0100570
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300571* https://launchpad.net/~salt-formulas-users
572 Join the salt-formulas-users team and subscribe to mailing list if required
Filip Pytloun219343c2017-02-02 13:02:03 +0100573
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300574* https://github.com/salt-formulas/salt-formula-horizon
575 Develop the salt-formulas projects in the master branch and then submit pull
576 requests against a specific formula
Filip Pytloun219343c2017-02-02 13:02:03 +0100577
OlgaGusarenko8c33bca2018-07-30 18:33:34 +0300578* #salt-formulas @ irc.freenode.net
579 Use this IRC channel in case of any questions or feedback which is always
580 welcome
Filip Pytloun219343c2017-02-02 13:02:03 +0100581