OpenStack Train版-11.安装horizon服务(控制节点)
OpenStack仪表板Dashboard服务的项目名称是Horizon,它所需的唯一服务是身份服务keystone,开发语言是python的web框架Django。
安装Train版本的Horizon有以下要求
Python 2.7、3.6或3.7
Django 1.11、2.0和2.2
Django 2.0和2.2支持在Train版本中处于试验阶段
Ussuri发行版(Train发行版之后的下一个发行版)将使用Django 2.2作为主要的Django版本。Django 2.0支持将被删除。
在控制节点(controller 192.168.0.10)上安装仪表板服务horizon。
#安装软件包 yum install openstack-dashboard -y
备份配置文件/etc/openstack-dashboard/local_settings
cp -a /etc/openstack-dashboard/local_settings{,.bak} grep -Ev '^$|#' /etc/openstack-dashboard/local_settings.bak >/etc/openstack-dashboard/local_settings
下面的所有注释不要写到配置文件中,这里只是用作解释含义,可以继续向下查看修改完整的配置文件内容
[root@controller ~]# vim /etc/openstack-dashboard/local_settings #配置仪表盘在controller节点上使用OpenStack服务 OPENSTACK_HOST = "controller" #允许主机访问仪表板,接受所有主机,不安全不应在生产中使用 ALLOWED_HOSTS = ['*'] #ALLOWED_HOSTS = ['one.example.com', 'two.example.com'] #配置memcached会话存储服务 SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', } } #启用身份API版本3 OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST #启用对域的支持 OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True #配置API版本 OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 3, } #配置Default为通过仪表板创建的用户的默认域 OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default" #配置user为通过仪表板创建的用户的默认角色 OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" #如果选择网络选项1,请禁用对第3层网络服务的支持,如果选择网络选项2,则可以打开 OPENSTACK_NEUTRON_NETWORK = { #自动分配的网络 'enable_auto_allocated_network': False, #Neutron分布式虚拟路由器(DVR) 'enable_distributed_router': False, #FIP拓扑检查 'enable_fip_topology_check': False, #高可用路由器模式 'enable_ha_router': False, #下面三个已过时,不用过多了解,官方文档配置中是关闭的 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, #ipv6网络 'enable_ipv6': True, #Neutron配额功能 'enable_quotas': True, #rbac政策 'enable_rbac_policy': True, #路由器的菜单和浮动IP功能,如果Neutron部署有三层功能的支持可以打开 'enable_router': True, #默认的DNS名称服务器 'default_dns_nameservers': [], #网络支持的提供者类型,在创建网络时,该列表中的网络类型可供选择 'supported_provider_types': ['*'], #使用与提供网络ID范围,仅涉及到VLAN,GRE,和VXLAN网络类型 'segmentation_id_range': {}, #使用与提供网络类型 'extra_provider_types': {}, #支持的vnic类型,用于与端口绑定扩展 #'supported_vnic_types': ['*'], #物理网络 #'physical_networks': [], } #配置时区为亚洲上海 TIME_ZONE = "Asia/Shanghai"
完整的配置文件修改内容如下,以下45行替换原文件的前27行,此后的内容不变,第七行secret_key保持原文件的内容不变
[root@controller ~]# cat /etc/openstack-dashboard/local_settings|head -45 import os from django.utils.translation import ugettext_lazy as _ from openstack_dashboard.settings import HORIZON_CONFIG DEBUG = False ALLOWED_HOSTS = ['*'] LOCAL_PATH = '/tmp' SECRET_KEY='77564af32b97bae5660e' SESSION_ENGINE = 'django.contrib.sessions.backends.cache' CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': 'controller:11211', } } EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' OPENSTACK_HOST = "controller" OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True OPENSTACK_API_VERSIONS = { "identity": 3, "image": 2, "volume": 3, } OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default" OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" OPENSTACK_NEUTRON_NETWORK = { 'enable_auto_allocated_network': False, 'enable_distributed_router': False, 'enable_fip_topology_check': False, 'enable_ha_router': False, 'enable_lb': False, 'enable_firewall': False, 'enable_vpn': False, 'enable_ipv6': True, 'enable_quotas': True, 'enable_rbac_policy': True, 'enable_router': True, 'default_dns_nameservers': [], 'supported_provider_types': ['*'], 'segmentation_id_range': {}, 'extra_provider_types': {}, 'supported_vnic_types': ['*'], 'physical_networks': [], } TIME_ZONE = "Asia/Shanghai"
重建apache的dashboard配置文件
cd /usr/share/openstack-dashboard python manage.py make_web_conf --apache > /etc/httpd/conf.d/openstack-dashboard.conf
若出现不能正常访问,请操作以下步骤
#建立策略文件(policy.json)的软链接,否则登录到dashboard将出现权限错误和显示混乱 ln -s /etc/openstack-dashboard /usr/share/openstack-dashboard/openstack_dashboard/conf #/etc/httpd/conf.d/openstack-dashboard.conf如果未包含,则添加以下行 WSGIApplicationGroup %{GLOBAL}
重新启动controller控制节点上的apache服务和memcache服务
systemctl restart httpd.service memcached.service systemctl enable httpd.service memcached.service
验证访问
在浏览器访问仪表板,网址为 http://192.168.0.10(注意,和以前版本不一样,不加dashboard)
使用admin或myuser用户和default域凭据进行身份验证。
域: default 用户名: admin 密码: ADMIN_PASS
登陆界面
登陆成功后的页面
验证身份管理菜单栏时访问内部错误,错误日志如下:
Daemon process called 'keystone-public' cannot be accessed by this WSGI application: /usr/bin/keystone-wsgi-public
原因是web根路径的配置问题,修改以下两项配置,修改后访问路径变为:http://192.168.0.10/dashboard(需要加dashboard)
vim /etc/openstack-dashboard/local_settings # 在第五行左右新增下列一行 WEBROOT = '/dashboard/' vim /etc/httpd/conf.d/openstack-dashboard.conf # 将原有配置分别在其对应位置修改为以下配置 #WSGIScriptAlias / /usr/share/openstack-dashboard/openstack_dashboard/wsgi.py WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi #Alias /static /usr/share/openstack-dashboard/static Alias /dashboard/static /usr/share/openstack-dashboard/static
重启httpd及memcached服务
systemctl restart httpd.service systemctl restart memcached.service