[ English | English (United Kingdom) | 中文 (简体, 中国) | नेपाली | español | Deutsch | русский | 한국어 (대한민국) | Indonesia | français | português (Brasil) | Esperanto ]
Настройка и конфигурирование панели управления¶
После установки панели управления вы можете настроить ее внешний вид и функциональность в соответствии с потребностями вашего окружения, проекта или бизнеса.
Вы также можете настроить панель управления для безопасного развертывания HTTPS или HTTP. Стандартная установка OpenStack использует незашифрованный HTTP-канал, но вы можете включить поддержку SSL для панели управления.
Информацию о настройке HTTPS или HTTP см. в разделе Настройте панель управления.
Настройка панели управления¶
Панель управления в Ubuntu по умолчанию устанавливает пакет openstack-dashboard-ubuntu-theme
. Если вы не хотите использовать этот пакет, удалите его и его зависимости:
# apt-get remove --auto-remove openstack-dashboard-ubuntu-theme
Примечание
В этом руководстве основное внимание уделяется файлу local_settings.py
.
Следующий контент панели управления можно настроить в соответствии с вашими потребностями:
Логотип
Цвета сайта
HTML-заголовок
Ссылка на логотип
URL справочника
Цвета логотипа и сайта¶
Создайте два файла логотипа PNG с прозрачным фоном, используя следующие размеры:
Экран авторизации: 365 x 50
Баннер для авторизованных пользователей: 216 x 35
Загрузите новые изображения в
/usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/img/
.Создайте таблицу стилей CSS в
/usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/scss/
.Измените цвета и имена файлов изображений соответствующим образом. Убедитесь, что относительные пути к каталогам одинаковы. Следующий пример файла показывает, как настроить файл CSS:
/* * New theme colors for dashboard that override the defaults: * dark blue: #355796 / rgb(53, 87, 150) * light blue: #BAD3E1 / rgb(186, 211, 225) * * By Preston Lee <plee@tgen.org> */ h1.brand { background: #355796 repeat-x top left; border-bottom: 2px solid #BAD3E1; } h1.brand a { background: url(../img/my_cloud_logo_small.png) top left no-repeat; } #splash .login { background: #355796 url(../img/my_cloud_logo_medium.png) no-repeat center 35px; } #splash .login .modal-header { border-top: 1px solid #BAD3E1; } .btn-primary { background-image: none !important; background-color: #355796 !important; border: none !important; box-shadow: none; } .btn-primary:hover, .btn-primary:active { border: none; box-shadow: none; background-color: #BAD3E1 !important; text-decoration: none; }
Откройте следующий HTML-шаблон в редакторе по вашему выбору:
/usr/share/openstack-dashboard/openstack_dashboard/templates/_stylesheets.html
Добавьте строку, чтобы включить вашу недавно созданную таблицу стилей. Например, файл
custom.css
:<link href='{{ STATIC_URL }}bootstrap/css/bootstrap.min.css' media='screen' rel='stylesheet' /> <link href='{{ STATIC_URL }}dashboard/css/{% choose_css %}' media='screen' rel='stylesheet' /> <link href='{{ STATIC_URL }}dashboard/css/custom.css' media='screen' rel='stylesheet' />
Перезапустите службу Apache.
Чтобы просмотреть изменения, перезагрузите панель управления. При необходимости вернитесь и измените файл CSS соответствующим образом.
HTML-заголовок¶
Задайте HTML-заголовок, который отображается в верхней части окна браузера, добавив следующую строку в
local_settings.py
:SITE_BRANDING = "Example, Inc. Cloud"
Перезапустите Apache, чтобы изменения вступили в силу.
Ссылка на логотип¶
Логотип также действует как гиперссылка. Поведение по умолчанию — перенаправление на
horizon:user_home
. Чтобы изменить это, добавьте следующий атрибут вlocal_settings.py
:SITE_BRANDING_LINK = "http://example.com"
Перезапустите Apache, чтобы изменения вступили в силу.
URL справочника¶
По умолчанию URL-адрес справочника указывает на https://docs.openstack.org. Чтобы изменить это, отредактируйте следующий атрибут в
local_settings.py
:HORIZON_CONFIG["help_url"] = "http://openstack.mycompany.org"
Перезапустите Apache, чтобы изменения вступили в силу.
Настройте панель управления¶
В следующем разделе о настройке панели управления для безопасного развертывания HTTPS или HTTP-развертывания используются конкретные примеры, чтобы процедура была понятна. Однако, путь к файлу зависит от дистрибутива. При необходимости вы также можете настроить размер окна VNC в панели управления.
Настройте панель управления для HTTP¶
Вы можете настроить панель управления для простого развертывания HTTP. Стандартная установка использует незашифрованный HTTP-канал.
Укажите хост для точки доступа службы идентификации в файле
local_settings.py
с помощью параметраOPENSTACK_HOST
.Следующий пример демонстрирует эту настройку:
import os from django.utils.translation import gettext_lazy as _ DEBUG = False TEMPLATE_DEBUG = DEBUG PROD = True SITE_BRANDING = 'OpenStack Dashboard' # Ubuntu-specific: Enables an extra panel in the 'Settings' section # that easily generates a Juju environments.yaml for download, # preconfigured with endpoints and credentials required for bootstrap # and service deployment. ENABLE_JUJU_PANEL = True # Note: You should change this value SECRET_KEY = 'elj1IWiLoWHgryYxFT6j7cM5fGOOxWY0' # Specify a regular expression to validate user passwords. # HORIZON_CONFIG = { # "password_validator": { # "regex": '.*', # "help_text": _("Your password does not meet the requirements.") # } # } LOCAL_PATH = os.path.dirname(os.path.abspath(__file__)) CACHES = { 'default': { 'BACKEND' : 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION' : '127.0.0.1:11211' } } # Send email to the console by default EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' # Or send them to /dev/null #EMAIL_BACKEND = 'django.core.mail.backends.dummy.EmailBackend' # Configure these for your outgoing email host # EMAIL_HOST = 'smtp.my-company.com' # EMAIL_PORT = 25 # EMAIL_HOST_USER = 'djangomail' # EMAIL_HOST_PASSWORD = 'top-secret!' # For multiple regions uncomment this configuration, and add (endpoint, title). # AVAILABLE_REGIONS = [ # ('http://cluster1.example.com/identity/v3', 'cluster1'), # ('http://cluster2.example.com/identity/v3', 'cluster2'), # ] OPENSTACK_HOST = "127.0.0.1" OPENSTACK_KEYSTONE_URL = "http://%s/identity/v3" % OPENSTACK_HOST OPENSTACK_KEYSTONE_DEFAULT_ROLE = "Member" # The OPENSTACK_KEYSTONE_BACKEND settings can be used to identify the # capabilities of the auth backend for Keystone. # If Keystone has been configured to use LDAP as the auth backend then set # can_edit_user to False and name to 'ldap'. # # TODO(tres): Remove these once Keystone has an API to identify auth backend. OPENSTACK_KEYSTONE_BACKEND = { 'name': 'native', 'can_edit_user': True } # OPENSTACK_ENDPOINT_TYPE specifies the endpoint type to use for the endpoints # in the Keystone service catalog. Use this setting when Horizon is running # external to the OpenStack environment. The default is 'internalURL'. #OPENSTACK_ENDPOINT_TYPE = "publicURL" # The number of Swift containers and objects to display on a single page before # providing a paging element (a "more" link) to paginate results. API_RESULT_LIMIT = 1000 # If you have external monitoring links, eg: # EXTERNAL_MONITORING = [ # ['Nagios','http://foo.com'], # ['Ganglia','http://bar.com'], # ] LOGGING = { 'version': 1, # When set to True this will disable all logging except # for loggers specified in this configuration dictionary. Note that # if nothing is specified here and disable_existing_loggers is True, # django.db.backends will still log unless it is disabled explicitly. 'disable_existing_loggers': False, 'handlers': { 'null': { 'level': 'DEBUG', 'class': 'logging.NullHandler', }, 'console': { # Set the level to "DEBUG" for verbose output logging. 'level': 'INFO', 'class': 'logging.StreamHandler', }, }, 'loggers': { # Logging from django.db.backends is VERY verbose, send to null # by default. 'django.db.backends': { 'handlers': ['null'], 'propagate': False, }, 'horizon': { 'handlers': ['console'], 'propagate': False, }, 'novaclient': { 'handlers': ['console'], 'propagate': False, }, 'keystoneclient': { 'handlers': ['console'], 'propagate': False, } } }
Конфигурация каталога служб в службе идентификации определяет, отображается ли служба в панели управления. Полный список см. в Settings Reference.
Перезапустите HTTP-сервер Apache.
Перезапустите
memcached
.
Настройка панели управления для HTTPS¶
Вы можете настроить панель управления для защищенного развертывания HTTPS. В то время как стандартная установка использует незашифрованный HTTP-канал, вы можете включить поддержку SSL для панели управления.
В этом примере используется домен http://openstack.example.com
. Используйте домен, который соответствует вашей текущей настройке.
В файле
local_settings.py
обновите следующие параметры:CSRF_COOKIE_SECURE = True SESSION_COOKIE_SECURE = True SESSION_COOKIE_HTTPONLY = True
Другие параметры требуют включения HTTPS; эти параметры защищают от межсайтового скриптинга.
Отредактируйте файл
openstack-dashboard.conf
, как показано в Примере после:Пример до
WSGIScriptAlias / /usr/share/openstack-dashboard/openstack_dashboard/wsgi.py WSGIDaemonProcess horizon user=www-data group=www-data processes=3 threads=10 Alias /static /usr/share/openstack-dashboard/openstack_dashboard/static/ <Location /> <ifVersion >=2.4> Require all granted </ifVersion> <ifVersion <2.4> Order allow,deny Allow from all </ifVersion> </Location>
Пример после
<VirtualHost *:80> ServerName openstack.example.com <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </IfModule> <IfModule !mod_rewrite.c> RedirectPermanent / https://openstack.example.com </IfModule> </VirtualHost> <VirtualHost *:443> ServerName openstack.example.com SSLEngine On # Remember to replace certificates and keys with valid paths in your environment SSLCertificateFile /etc/apache2/SSL/openstack.example.com.crt SSLCACertificateFile /etc/apache2/SSL/openstack.example.com.crt SSLCertificateKeyFile /etc/apache2/SSL/openstack.example.com.key SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown # HTTP Strict Transport Security (HSTS) enforces that all communications # with a server go over SSL. This mitigates the threat from attacks such # as SSL-Strip which replaces links on the wire, stripping away https prefixes # and potentially allowing an attacker to view confidential information on the # wire Header add Strict-Transport-Security "max-age=15768000" WSGIScriptAlias / /usr/share/openstack-dashboard/openstack_dashboard/wsgi.py WSGIDaemonProcess horizon user=www-data group=www-data processes=3 threads=10 Alias /static /usr/share/openstack-dashboard/openstack_dashboard/static/ <Location /> Options None AllowOverride None # For Apache http server 2.4 and later: <ifVersion >=2.4> Require all granted </ifVersion> # For Apache http server 2.2 and earlier: <ifVersion <2.4> Order allow,deny Allow from all </ifVersion> </Location> </VirtualHost>
В этой конфигурации Apache HTTP Server прослушивает порт 443 и перенаправляет все небезопасные запросы на протокол HTTPS. Защищенный раздел определяет закрытый ключ, открытый ключ и сертификат для использования.
Перезапустите HTTP-сервер Apache.
Перезапустите
memcached
.Если вы попытаетесь получить доступ к панели управления через HTTP, браузер перенаправит вас на страницу HTTPS.
Примечание
Настройка панели мониторинга для HTTPS также требует включения SSL для прокси-службы noVNC. На узле контроллера добавьте следующие дополнительные параметры в раздел
[DEFAULT]
файла/etc/nova/nova.conf
:[DEFAULT] # ... ssl_only = true cert = /etc/apache2/SSL/openstack.example.com.crt key = /etc/apache2/SSL/openstack.example.com.key
На вычислительных узлах убедитесь, что параметр
nonvncproxy_base_url
указывает на URL-адрес со схемой HTTPS:[DEFAULT] # ... novncproxy_base_url = https://controller:6080/vnc_auto.html