一、写在前面

这篇文章主要介绍了OpenStack Ocata Horizon 根据官方的快速开始文档进行实际的调试验证,涉及在基于基本组件部署完成的情况下,源码部署Horizon开发环境,在后续的文章中将通过不同的文章来具体来说明开发,不涉及OpenStack Ocata 其他组件部署,由于作者能力或者理解不够如果错误请告知, 如果转载,请保留作者信息。

邮箱地址:jpzhang.ht@gmail.com
个人博客:https://jianpengzhang.github.io/
CSDN博客:http://blog.csdn.net/u011521019

二、Horizon (OpenStack Dashboard)

Horizon是一个基于Django的项目,旨在提供一个完整的OpenStack仪表板,以及一个可扩展框架,用于从可重用组件来构建新的仪表板。 openstack_dashboard模块是Django站点的实现,它使用Horizon APP来提供与各种OpenStack项目基于Web的交互。

项目页面:https://launchpad.net/horizon
蓝图和功能规格:https://blueprints.launchpad.net/horizon
问题跟踪:https://bugs.launchpad.net/horizon
源代码:https://github.com/openstack/horizon
代码审查:
[https://review.openstack.org/#q,status:open+project:openstack/horizon,n,z]
(https://review.openstack.org/#q,status:open+project:openstack/horizon,n,z)
持续集成:
Jenkinshttps://jenkins.openstack.org ;
Zuulhttp://status.openstack.org/zuul

三、使用Horizon

请参阅doc/source/topics/install.rst 有关如何在OpenStack中安装Horizon。 它描述了示例步骤,并提供了更详细的设置和配置的指针。也可以在http://docs.openstack.org/developer/horizon/topics/install.html上找到。

Horizon界面功能使用请参考:https://docs.openstack.org/user-guide/common/conventions.html

四、开发人员入门

doc/source/quickstart.rst 或http://docs.openstack.org/developer/horizon/quickstart.html介绍如何设置Horizon开发环境并开始开发。

五、构建贡献者文档

OpenStack Horizon 源码包目录中有一个目录为:horizon-stable-ocata/doc

.
├── Makefile
└── source├── browser_support.rst├── conf.py├── contributing.rst├── faq.rst├── glossary.rst├── images├── index.rst├── intro.rst├── plugin_registry.rst├── quickstart.rst├── ref├── testing.rst├── topics└── tutorials

这里面是由贡献者撰写的关于Horizon使用的文档,与http://docs.openstack.org/developer/horizon/quickstart.html内容是一直的,如果觉得网页浏览查看速度慢或者环境限制不能上网可以通过构建成html在本地进行浏览,源文件使用reStructuredText维护在doc/source目录中,由Sphinx构建.

自动建筑命令:

$ ./run_tests.sh --docs

如果想知道更多run_tests.sh的功能,可以./run_tests.sh --help查阅,通过该方式构建文档,通过virtualenv建立一个隔离的环境。

手动建筑命令:

$ tools / with_venv.sh sphinx-build doc / source 

doc/build/html目录中:

.
├── browser_support.html
├── contributing.html
├── faq.html
├── genindex.html
├── glossary.html
├── _images
├── index.html
├── intro.html
├── _modules
├── objects.inv
├── plugin_registry.html
├── py-modindex.html
├── quickstart.html
├── ref
├── search.html
├── searchindex.js
├── _sources
├── _static
├── testing.html
├── topics
└── tutorials

六、Horizon UI开发环境部署

这里认为你已经部署好了一个openstack ocata基础环境,仅演示手动部署horizon UI开发环境。

(1)、基础准备

通过Virtualenv,创建一个隔离的horizon部署环境,
pip安装virtualenv:

apt-get install python-pip
pip install virtualenv 或者 apt-get install python-virtualenv

创建一个独立的Horizon运行环境:

virtualenv --no-site-packages horizon.venv
输出:
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/work/horizon.venv/bin/python2
Also creating executable in /home/work/horizon.venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.

source进入该环境:

source horizon.venv/bin/activate
(horizon.venv) root@ubuntu:/home/work#

退出当前的venv环境,使用deactivate命令:

(horizon.venv) root@ubuntu:/home/work# deactivate
root@ubuntu:/home/work# 

(2)、安装 Horizon

下载 Horizon 代码:

git clone https://github.com/openstack/horizon.git
cd horizon/

安装 Horizon 用于开发:在horizon目录下执行,

pip install -e .

出错:

_setup/include/cext.h:34:20: fatal error: Python.h: No such file or directory #include "Python.h"

执行如下命令解决问题,在重复执行上面的命令:

sudo apt-get install -y libxml2-dev libxslt1-dev zlib1g-dev python3-pip

配置环境:

cp openstack_dashboard/local/local_settings.py.example openstack_dashboard/local/local_settings.py

vi openstack_dashboard/local/local_settings.py

ALLOWED_HOSTS = '*'
# ...
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'default' # 如果 Domain 的 ID 不是 default,则为对应的 ID
# ...
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
# ...
OPENSTACK_HOST = "172.16.17.59" # 控制节点IP地址
OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" #根据你的环境自己配置这个参数,这里我是‘user’
# ...
OPENSTACK_API_VERSIONS = {"identity": 3,"image": 2,"volume": 2,
}
# ...
# 根据你的网络环境配置这里的参数
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,
}

初始化静态文件 注意:一定要先执行此步骤再启动服务!否则再执行因为缓存还是不能正常运行,需要在 collectstatic 时增加 -c 参数

python manage.py collectstatic -lpython manage.py compress --force

启动 Horizon 项目:

python manage.py runserver 0.0.0.0:8001

出错:

AttributeError: DjangoTranslation instance has no attribute 'plural'

执行如下命令解决问题:

cd horizon/openstack_dashboard
django-admin compilemessages

(3)、小结

完成上述配置,一个简单的 OpenStack UI 开发环境就搭建完成了。当然每个人的环境不一致,可能会遇到一些奇怪的问题,需要静下心满满解决这些问题。

OpenStack Ocata Horizon 开发(一)—— 快速开始相关推荐

  1. OpenStack Mitaka Horizon 主题开发

    一.写在前面 这篇文章主要介绍了OpenStack Mitaka Horizon主题的开发.这里只是说明horiozn主题包的开发逻辑,不具体阐述css.js.html文件的开发, 仅仅是说明hori ...

  2. OpenStack Ocata Release Notes

    本文整理了OpenStack Ocata版本的主要项目更新情况,供大家参考. Nova Ocata 版本加入了许多 Cell V2 的功能 . 但是不是所有的都可以用于生产 . 现在部署 Nova 需 ...

  3. Cloud in Action: Install OpenStack Ocata from scratch

    Cloud in Action: Install OpenStack Ocata from scratch   薛国锋     xueguofeng2011@gmail.com OpenStack c ...

  4. 透过OpenStack Ocata贡献排名看中国力量强势崛起

    点击标题下「中国云报」可快速关注   中国公司对OpenStack社区的贡献情况,Ocata版本比Newton版本有了大幅提升.华为.九州都已跻身全球前十,中兴.麒麟.易捷思达.海云捷迅和浪潮则紧随其 ...

  5. 个人博客系统的设计与实现_一个 Go 开发的快速、简洁、美观、前后端分离的个人博客系统...

    大家好,我是你们的章鱼猫. 我们从来不含糊说推荐就推荐,所以今天给大家推荐一个 go.echo.vue 开发的快速.简洁.美观.前后端分离的个人博客系统 (blog),同时基于这个系统也可以方便二次开 ...

  6. Qt Creator开发Qt快速应用程序

    Qt Creator开发Qt快速应用程序 开发Qt快速应用程序 创建Qt快速项目 在设计模式下编辑QML文件 创建UI 添加动态 编辑3D场景 相关话题 浏览ISO 7000图标 将QML模块与插件一 ...

  7. 新手必看 | RVB2601开发板快速上手指南

    简介:技术解码栏目:是面向开发者详细解读芯片开放社区(OCC)上关于处理器.芯片.基础软件平台.集成开发环境及应用开发平台的相关技术,方便开发者学习及快速上手,提升开发效率. 之前我们推送了RISC- ...

  8. 快速开发平台快速开发程序

    快速开发平台快速开发程序 1.数据字典如下图: 2.界面设计器代码如下 1 <object name="" assembly="System.Windows.For ...

  9. Computer:项目管理之软件开发模式(瀑布式开发、快速原型开发、迭代式开发、螺旋式开发、敏捷式开发、DevOps开发)的简介、对比之详细攻略

    Computer:项目管理之软件开发模式(瀑布式开发.快速原型开发.迭代式开发.螺旋式开发.敏捷式开发.DevOps开发)的简介.对比之详细攻略 导读:软件开发模型,用来描述和表示一个复杂的开发过程. ...

最新文章

  1. Git 常用命令,每条都很重要!
  2. 《数学之美》第16章 信息指纹及其应用
  3. 网站跳出率是SEO优化转化低的诱因之一
  4. ubuntu开启端口_RChain节点运行无门槛教程(二)--Windows-Ubuntu
  5. C/C++ 中变量的声明、定义、初始化的区别
  6. 阶乘末尾蓝桥杯java_Java实现第九届蓝桥杯阶乘位数
  7. tar命令打包并删除原文件
  8. visio mysql使用教程_Visio技巧篇之一些常用小技巧
  9. python将网页保存为图片_「保存网页为图片」如何将整个网页保存为图片? - seo实验室...
  10. 浅谈Observer观察者模式
  11. 型如=?gb2312?B?的转码
  12. 同学早已年薪百万 为何你却还在朋友圈集赞?
  13. python将字符写入excel_Python 爬虫并且将数据写入Excel
  14. K8s安装dashboard可视化界面
  15. 电力电子技术笔记(5)——其它新型电力电子器件、功率集成电路
  16. css后台页面布局效果
  17. 百万美元“未来科技大奖”揭晓:山东大学彭实戈教授荣获数学与计算机科学奖-547。
  18. 电源拓扑结构优缺点比较-常见开关电源优缺点对比
  19. Leetcode刷题笔记之11. 盛最多水的容器
  20. dedecms编辑器 php,dede编辑器怎么换成kindEditor编辑器

热门文章

  1. 2.数据结构与算法:斐波那契算法
  2. Oracle 真的有参数可以 1s 统计完 200G用户下的所有对象么?
  3. html5网页中加入播放器,10款jquery+html5实现的网页播放器
  4. mall 三级分销插件设计
  5. 《Clair二次开发指南2——analyze-local-images源码剖析》
  6. 【学习记录】多主体中的BDI(Belief-Desire-Intention)
  7. Linux Shell/python等脚本总结
  8. 加米谷大数据行业报告:为何数据科学团队需要通才而非专才
  9. html5模仿手机音乐播放器,仿酷狗html5手机音乐播放器主要部分代码_html5教程技巧...
  10. 老板电器的新“大厨”,能否在厨电行业炒出新菜?