OpenStack 开发入门
閱讀本文約花費: 5 (分鐘)
什么是 OpenStack?
官方网站给出的定义是:
OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.
粗略翻译:
OpenStack 是一个可以控制整个数据中心里大量的计算、存储和网络资源池的云操作系统,它通过一个既能赋予管理员控制资源的能力,也能让普通用户调配资源的可视化控制面板(Dashboard)来管理这一切。
Openstack 介绍
对开发者来说,我们需要知道的是,OpenStack 是由一系列开源组件构成的基础设施即服务(Infrastructure as a Service,简称IaaS)范畴的云平台解决方案,它让用户方便的构建和管理自己的云平台,它正在解决以及将要解决的主要问题就是如何自动管理物理主机上虚拟出来的虚拟机和虚拟资源。
虚拟资源主要计算、网络、存储三种,OpenStack 有对应的组件去管理这些资源,每个组件在 github 上都是分开的工程,我们可以从这里获取到源码:https://github.com/openstack/
主要组件以及作用
Project | Service | Catalog |
---|---|---|
NOVA | Compute Service 计算服务 | Compute |
GLANCE | Image Service 镜像服务 | Compute |
SWIFT | Object Store 对象存储 | Storage, Backup & Recovery |
CINDER | Block Storage 块存储 | Storage, Backup & Recovery |
KEYSTONE | Identity service 认证服务 | Security,Identity & Compliance |
NEUTRON | Networking 网络服务 | Networking&Content Delivery |
HORIZON | Dashboard 管理界面 | Management Tools |
组件内部也并不是完全一体,紧密耦合的状态,这样方便了组件的扩展和维护,组件之间也并不是孤立的,有时候一个操作可能需要多个组件共同完成,下图就是从整个 OpenStack 的全局技术架构的角度看它的组件,以及之间的大致的调用关系。
全局视图
准备动手之前
- 你需要熟悉 Python 语言,不管 2.x 还是 3.x
因为 OpenStack 各个组件主要是基于 Python 开发,熟悉 Python 语言就自然成为一个不可或缺的准备工作。虽然 2.x 和 3.x 现在都被广泛的试用,并无太大优劣之分,不过我还是推荐学习 3.x,你可以从这些地方获取到学习资料- 英文教程:Python tutorial
- 中文教程:廖雪峰 python 教程
- WSGI 和 Paste Deployment 相关知识点 Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。这一块是 OpenStack Restful 接口的基础。
Paste Deployment是用来发现和配置WSGI的系统。对于WSGI使用者来说,它提供了简单的方法(loadapp)通过配置文件来启动WSGI应用,对于WSGI的开发者来说,只需要给自己的应用提供一套简单的入口点即可。OpenStack 主要使用这个框架来完成 WSGI 部分的工作,那么我们开发的时候,自然也是从这里入手。
文档地址:- http://pastedeploy.readthedocs.io/en/latest/
资料地址:- http://yansu.org/2013/06/07/learn-python-setuptools-in-detail.html - 了解OpenStack 用到的包(或者叫框架)及其作用
这里 OpenStack 列举了自己开发中使用的包,可以简单了解下,并且在自己的开发中使用 https://docs.openstack.org/developer/openstack-projects.html - IDE
建议使用 IDE 开完成开发,可以选在 pydev 提供的基于 eclipse 的版本 liclipse ,也可以使用 Jetbrains 公司开发的 Pycharm
Win环境中远程调试 OpenStack 代码设置
OpenStack 的各个组件现在还只能部署在 Linux 环境中, 如果我们想调试 OpenStack 组件的代码,那么必须远程调试,下面就简单的说明一下调试环境的搭建。
- 安装 dokan 和 win-sshfs,这两个软件能够将远程的文件,挂载成一个 windows 系统中的盘,方便我们对远程的代码进行修改和同步
下载地址:
https://github.com/dokan-dev/dokany/releases/tag/v1.0.1
https://github.com/Foreveryone-cz/win-sshfs/releases 先安装 dokan 库,然后安装 win-sshfs, 安装 win-sshfs 的时候,不会有具体提示信息,安装成功之后可以在任务栏看到它的图标
图标 - 安装 pycharm,或者 liclipse ,下载地址见上节
- 在需要调试的代码环境中安装 pydevd 包,方法:pip install pydevd
- 将挂载的工程导入到 IDE 里面,由于是远程访问,速度可能稍慢,等待他完成
以 pycharm 为例,讲解设置远程调试步骤
1 配置远程 debugger
2 启动debugger server
3 启动完成,将控制台显示的代码放到需要远程 debugger 的文件