horizon部署linux桌面,7-horizon仪表盘服务部署
[TOC]
## A-功能介绍
Dashboard(horizon)是一个web接口,使得云平台管理员以及用户可以管理不同的Openstack资源以及服务。
它是使用python django框架开发的,它没有自己的数据库,web页面展示,全程依赖调用其他服务的api。
## B-服务部署
[官方部署文档](https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/horizon-install.html#install-and-configure-components)
官方是将horizon装在控制节点中,但我们这里讲horizon装在计算节点中,因为horizon没有数据库,装在哪里都可以
### a-安装软件
```sh
yum install openstack-dashboard python-memcached -y
```
### b-修改配置
**方法1:按官方修改**
[官方链接](https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/horizon-install.html#install-and-configure-components)
编辑文件/etc/openstack-dashboard/local_settings并完成如下动作:
* 在controller节点上配置仪表盘以使用 OpenStack 服务:
~~~
OPENSTACK_HOST = "controller"
~~~
* 允许所有主机访问仪表板:
~~~
ALLOWED_HOSTS = ['*', ]
~~~
* 配置memcached会话存储服务:
~~~
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': 'controller:11211',
}
}
~~~
* 启用第3版认证API:
~~~
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
~~~
* 启用对域的支持
~~~
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
~~~
* 配置API版本:
~~~
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
}
~~~
* 通过仪表盘创建用户时的默认域配置为default:
~~~
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"
~~~
* 通过仪表盘创建的用户默认角色配置为user:
~~~
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"
~~~
* 如果您选择网络参数1,禁用支持3层网络服务:
~~~
OPENSTACK_NEUTRON_NETWORK = {
...
'enable_router': False,
'enable_quotas': False,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False,
'enable_fip_topology_check': False,
}
~~~
* 可以选择性地配置时区:
~~~
TIME_ZONE = "TIME_ZONE"
~~~
**方法2:上传已改好的配置**
由于配置文件行数特别多,总共700多行,除去注释和空行还有200多行,因此只将清爽配置贴在最后
### c-修改httpd配置
编辑`/etc/httpd/conf.d/openstack-dashboard.conf`文件,在`WSGISocketPrefix run/wsgi`下面加一行代码: `WSGIApplicationGroup %{GLOBAL} `
```sh
sed -i '/WSGISocketPrefix/a WSGIApplicationGroup %{GLOBAL}' \
/etc/httpd/conf.d/openstack-dashboard.conf
```
### d-启动
```sh
systemctl start httpd.service memcached.service
```
### e-浏览器访问
使用浏览器 http://10.0.0.31/dashboard ,如果现实登录界面则正确
* 域:default
* 用户名:admin
* 密码:ADMIN_PASS
## 附件:配置文件
```py
[root@controller ~]# egrep -v "#|^$" local_settings
import os
from django.utils.translation import ugettext_lazy as _
from openstack_dashboard import exceptions
from openstack_dashboard.settings import HORIZON_CONFIG
DEBUG = False
TEMPLATE_DEBUG = DEBUG
WEBROOT = '/dashboard/'
ALLOWED_HOSTS = ['*', ]
OPENSTACK_API_VERSIONS = {
"identity": 3,
"image": 2,
"volume": 2,
"compute": 2,
}
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'default'
LOCAL_PATH = '/tmp'
SECRET_KEY='65941f1393ea1c265ad7'
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_DEFAULT_ROLE = "user"
OPENSTACK_KEYSTONE_BACKEND = {
'name': 'native',
'can_edit_user': True,
'can_edit_group': True,
'can_edit_project': True,
'can_edit_domain': True,
'can_edit_role': True,
}
OPENSTACK_HYPERVISOR_FEATURES = {
'can_set_mount_point': False,
'can_set_password': False,
'requires_keypair': False,
}
OPENSTACK_CINDER_FEATURES = {
'enable_backup': False,
}
OPENSTACK_NEUTRON_NETWORK = {
'enable_router': False,
'enable_quotas': False,
'enable_ipv6': False,
'enable_distributed_router': False,
'enable_ha_router': False,
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False,
'enable_fip_topology_check': False,
'default_ipv4_subnet_pool_label': None,
'default_ipv6_subnet_pool_label': None,
'profile_support': None,
'supported_provider_types': ['*'],
'supported_vnic_types': ['*'],
}
OPENSTACK_HEAT_STACK = {
'enable_user_pass': True,
}
IMAGE_CUSTOM_PROPERTY_TITLES = {
"architecture": _("Architecture"),
"kernel_id": _("Kernel ID"),
"ramdisk_id": _("Ramdisk ID"),
"image_state": _("Euca2ools state"),
"project_id": _("Project ID"),
"image_type": _("Image Type"),
}
IMAGE_RESERVED_CUSTOM_PROPERTIES = []
API_RESULT_LIMIT = 1000
API_RESULT_PAGE_SIZE = 20
SWIFT_FILE_TRANSFER_CHUNK_SIZE = 512 * 1024
DROPDOWN_MAX_ITEMS = 30
TIME_ZONE = "Asia/Shanghai"
POLICY_FILES_PATH = '/etc/openstack-dashboard'
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'null': {
'level': 'DEBUG',
'class': 'logging.NullHandler',
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['null'],
'propagate': False,
},
'requests': {
'handlers': ['null'],
'propagate': False,
},
'horizon': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'openstack_dashboard': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'novaclient': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'cinderclient': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'keystoneclient': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'glanceclient': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'neutronclient': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'heatclient': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'ceilometerclient': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'swiftclient': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'openstack_auth': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'nose.plugins.manager': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'django': {
'handlers': ['console'],
'level': 'DEBUG',
'propagate': False,
},
'iso8601': {
'handlers': ['null'],
'propagate': False,
},
'scss': {
'handlers': ['null'],
'propagate': False,
},
},
}
SECURITY_GROUP_RULES = {
'all_tcp': {
'name': _('All TCP'),
'ip_protocol': 'tcp',
'from_port': '1',
'to_port': '65535',
},
'all_udp': {
'name': _('All UDP'),
'ip_protocol': 'udp',
'from_port': '1',
'to_port': '65535',
},
'all_icmp': {
'name': _('All ICMP'),
'ip_protocol': 'icmp',
'from_port': '-1',
'to_port': '-1',
},
'ssh': {
'name': 'SSH',
'ip_protocol': 'tcp',
'from_port': '22',
'to_port': '22',
},
'smtp': {
'name': 'SMTP',
'ip_protocol': 'tcp',
'from_port': '25',
'to_port': '25',
},
'dns': {
'name': 'DNS',
'ip_protocol': 'tcp',
'from_port': '53',
'to_port': '53',
},
'http': {
'name': 'HTTP',
'ip_protocol': 'tcp',
'from_port': '80',
'to_port': '80',
},
'pop3': {
'name': 'POP3',
'ip_protocol': 'tcp',
'from_port': '110',
'to_port': '110',
},
'imap': {
'name': 'IMAP',
'ip_protocol': 'tcp',
'from_port': '143',
'to_port': '143',
},
'ldap': {
'name': 'LDAP',
'ip_protocol': 'tcp',
'from_port': '389',
'to_port': '389',
},
'https': {
'name': 'HTTPS',
'ip_protocol': 'tcp',
'from_port': '443',
'to_port': '443',
},
'smtps': {
'name': 'SMTPS',
'ip_protocol': 'tcp',
'from_port': '465',
'to_port': '465',
},
'imaps': {
'name': 'IMAPS',
'ip_protocol': 'tcp',
'from_port': '993',
'to_port': '993',
},
'pop3s': {
'name': 'POP3S',
'ip_protocol': 'tcp',
'from_port': '995',
'to_port': '995',
},
'ms_sql': {
'name': 'MS SQL',
'ip_protocol': 'tcp',
'from_port': '1433',
'to_port': '1433',
},
'mysql': {
'name': 'MYSQL',
'ip_protocol': 'tcp',
'from_port': '3306',
'to_port': '3306',
},
'rdp': {
'name': 'RDP',
'ip_protocol': 'tcp',
'from_port': '3389',
'to_port': '3389',
},
}
REST_API_REQUIRED_SETTINGS = ['OPENSTACK_HYPERVISOR_FEATURES',
'LAUNCH_INSTANCE_DEFAULTS']
```
horizon部署linux桌面,7-horizon仪表盘服务部署相关推荐
- 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借助TopSelf、服务类】)【转载】...
第十二节: 总结Quartz.Net几种部署模式(IIS.Exe.服务部署[借助TopSelf.服务类]) 一. IIS部署 比如在MVC框架中集成了Quartz.Net定时调度,此时该调度系统会随着 ...
- 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借助TopSelf、服务类】)
一. IIS部署 比如在MVC框架中集成了Quartz.Net定时调度,此时该调度系统会随着MVC框架被挂在IIS下,IIS会进程回收,所以大部分开发都会遇到Quartz挂在IIS下一段时间不好用. ...
- 微服务开发及部署_基于 Kubernetes 的微服务部署即代码
在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...
- linux系统部署静态网站,Linux笔记15 使用Apache服务部署静态网站。
转一篇简洁的UIView动画编程方法 iOS 中的 UIView 动画编程其实还是很简单的,像 CSS3 一样,在给定的时间内完成状态连续性的变化呈现.比如背景色,Frame 大小,位移.翻转,特明 ...
- linux svn 自动部署,linux下svn安装和自动部署
liunx系统下安装svn并自动更新到项目中 三部分:[1.安装 2.建立svn库 3.配置文件]html 查看是否安装了svn [svn –version] 若是安装了svn能够先进行卸载 [sud ...
- Linux在高铁项目的部署环境
因为Linux和Java像开源.所以,现在在server基本上使用部署Linux平台即server.然后部署项目.在开发项目的过程中.程序员绝大多数仍采用最经典windows操作系统,尽管Linux也 ...
- 服务部署-Samba服务器
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 目录 1 基础知识 1.1 Samba 服务介绍 1987年,微软公司和英特尔公司共同制定了S ...
- 解析Linux 多应用程序docker自动部署脚本
2019独角兽企业重金招聘Python工程师标准>>> 摘要: Linux 多应用程序docker自动部署脚本可以结合jenkins分布式部署 Linux 多应用程序docker自动 ...
- 阿里云Kuberneters微服务部署案例
3. 如何安装Docker Desktop for Mac 如何安装Docker Desktop for Mac 4. SpringCloud微服务应用 SpringCloud微服务应用 5. Kub ...
最新文章
- 谷歌 NAS + 目标检测:SpineNet论文详解
- 异常 Cannot resolve class or package
- 北斗导航 | RDSS短报文之数据解压缩算法:LZ77
- 把linux插足到域
- 练习mvc做一个知识库(二)
- 如何修改php的网页文件,php如何修改php文件内容
- intellij IDEA 关于src等某些文件夹不能右键新建class文件问题
- 计算机和口腔医学都不错的学校,人民日报推荐“各省”好大学,并非只有985/211,普本也有好大学...
- Linux中的文件查找技巧
- ELMAH--Using HTTP Modules and Handlers to Create Pluggable ASP.NET Components 77 out of 90 rated th
- Java instanceof用法
- python print sep,Python3.x语句print(1,2,3,sep=’:’)的输出结果为()。
- 深圳端午节骑行活动,欢迎大家参加
- windows打开属性就显示资源管理器重启(解决方法)
- windows server 2008r2下搭建***服务器
- Arduino颜色分类器
- java macd指标_Java 验证 MACD 底背离是否真的有效
- vue3 出现 Component inside <Transition> renders non-element root node that cannot be animated.
- 宇宙飞机(space plane)
- 向excel里面插入网络图片