[ 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 справочника

Цвета логотипа и сайта

  1. Создайте два файла логотипа PNG с прозрачным фоном, используя следующие размеры:

    • Экран авторизации: 365 x 50

    • Баннер для авторизованных пользователей: 216 x 35

  2. Загрузите новые изображения в /usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/img/.

  3. Создайте таблицу стилей CSS в /usr/share/openstack-dashboard/openstack_dashboard/static/dashboard/scss/.

  4. Измените цвета и имена файлов изображений соответствующим образом. Убедитесь, что относительные пути к каталогам одинаковы. Следующий пример файла показывает, как настроить файл 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;
    }
    
  5. Откройте следующий HTML-шаблон в редакторе по вашему выбору:

    /usr/share/openstack-dashboard/openstack_dashboard/templates/_stylesheets.html
    
  6. Добавьте строку, чтобы включить вашу недавно созданную таблицу стилей. Например, файл 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' />
    
  7. Перезапустите службу Apache.

  8. Чтобы просмотреть изменения, перезагрузите панель управления. При необходимости вернитесь и измените файл CSS соответствующим образом.

HTML-заголовок

  1. Задайте HTML-заголовок, который отображается в верхней части окна браузера, добавив следующую строку в local_settings.py:

    SITE_BRANDING = "Example, Inc. Cloud"
    
  2. Перезапустите Apache, чтобы изменения вступили в силу.

URL справочника

  1. По умолчанию URL-адрес справочника указывает на https://docs.openstack.org. Чтобы изменить это, отредактируйте следующий атрибут в local_settings.py:

    HORIZON_CONFIG["help_url"] = "http://openstack.mycompany.org"
    
  2. Перезапустите Apache, чтобы изменения вступили в силу.

Настройте панель управления

В следующем разделе о настройке панели управления для безопасного развертывания HTTPS или HTTP-развертывания используются конкретные примеры, чтобы процедура была понятна. Однако, путь к файлу зависит от дистрибутива. При необходимости вы также можете настроить размер окна VNC в панели управления.

Настройте панель управления для HTTP

Вы можете настроить панель управления для простого развертывания HTTP. Стандартная установка использует незашифрованный HTTP-канал.

  1. Укажите хост для точки доступа службы идентификации в файле 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.

  2. Перезапустите HTTP-сервер Apache.

  3. Перезапустите memcached.

Настройка панели управления для HTTPS

Вы можете настроить панель управления для защищенного развертывания HTTPS. В то время как стандартная установка использует незашифрованный HTTP-канал, вы можете включить поддержку SSL для панели управления.

В этом примере используется домен http://openstack.example.com. Используйте домен, который соответствует вашей текущей настройке.

  1. В файле local_settings.py обновите следующие параметры:

    CSRF_COOKIE_SECURE = True
    SESSION_COOKIE_SECURE = True
    SESSION_COOKIE_HTTPONLY = True
    

    Другие параметры требуют включения HTTPS; эти параметры защищают от межсайтового скриптинга.

  2. Отредактируйте файл 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. Защищенный раздел определяет закрытый ключ, открытый ключ и сертификат для использования.

  3. Перезапустите HTTP-сервер Apache.

  4. Перезапустите 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