内容简介
全书共分八部分,按预备篇(第1、2章)、Python篇(第3、4章)、开发基础(第5、6、7章)、Horizon开发篇(第8、9章)、Nova开发篇(第10章)、Neutron开发篇(第11章)、测试篇(第12章)和扩展篇(附录A~D)的顺序,循序渐进地对OpenStack展开深度剖析。零基础入门,全方位涵盖了OpenStack的基础知识,同时结合大量企业内部资料和实践案例,适合作为OpenStack初学者及相关开发人员的参考资料。
目录
目 录?Contents
序
前 言
第1章 OpenStack企业工程师的成长
及工作介绍 1
1.1 Horizon界面工程师的工作内容 1
1.2 Neutron网络工程师的工作内容 2
1.3 Nova资深工程师的工作内容 3
1.4 本章小结 5
第2章 开发环境的搭建 6
2.1 Windows开发环境的搭建 6
2.1.1 Git的安装 6
2.1.2 JDK的安装与配置 12
2.1.3 Python的安装与配置 15
2.1.4 PyCharm的安装与配置 19
2.2 Linux开发环境的搭建 24
2.2.1 Vim编辑器 24
2.2.2 PyCharm编辑器 25
2.3 Eclipse开发环境的搭建 26
2.3.1 安装Eclipse的PyDev插件 26
2.3.2 安装Eclipse的EGit插件 26
2.4 Launchpad账号 26
2.4.1 Launchpad账号注册 26
2.4.2 上传SSH keys 27
2.4.3 补充相关账号与信息 30
2.5 Git的使用 32
2.5.1 设置Git全局配置 32
2.5.2 安装git-review 工具并验证 33
2.5.3 提交代码步骤 33
2.5.4 Git管理流程图 35
2.6 本章小结 35
第3章 Python语言基础 36
3.1 Python概述 36
3.2 Python基础 37
3.2.1 编码 37
3.2.2 缩进与分隔 37
3.2.3 命名规范 38
3.2.4 注释 39
3.2.5 执行 39
3.2.6 代码的调试 40
3.2.7 帮助的使用 41
3.3 Python数据类型 42
3.3.1 变量 42
3.3.2 数字与表达式 44
3.3.3 字符串和列表 45
3.3.4 元组 49
3.3.5 字典 50
3.3.6 其他类型 50
3.4 流程控制 51
3.4.1 if语句 51
3.4.2 while循环 52
3.4.3 for循环 53
3.4.4 continue和break 53
3.4.5 异常处理 53
3.4.6 else的特殊用法 54
3.5 函数 55
3.5.1 函数基础 55
3.5.2 函数参数 55
3.5.3 函数体和返回值 57
3.5.4 再论类型和循环 58
3.5.5 生成器 60
3.5.6 可调用的变量 62
3.5.7 变量作用域 63
3.6 本章小结 64
第4章 Python模块 65
4.1 SQLAlchemy 65
4.1.1 安装 SQLAlchemy 65
4.1.2 使用 SQLAlchemy对数据库操作 65
4.1.3 使用 ORM 67
4.1.4 完整示例 69
4.2 logging模块 70
4.2.1 logging的使用 70
4.2.2 若干重要的概念 71
4.2.3 logging工作流程 73
4.2.4 日志配置 74
4.3 Eventlet 77
4.3.1 greenlet 77
4.3.2 GreenThread 78
4.4 WSGI 81
4.4.1 RESTful API介绍 81
4.4.2 WSGI简介 82
4.4.3 简单的WSGI 83
4.4.4 运行WSGI服务 84
4.4.5 Middleware 86
4.5 PasteDeploy 87
4.5.1 PasteDeploy安装 87
4.5.2 Paste配置文件 87
4.5.3 改进WSGI 89
4.6 WebOb 90
4.6.1 Python装饰器说明 90
4.6.2 简单示例 91
4.6.3 添加自己的中间件 91
4.6.4 其他特性 92
4.7 routes模块 92
4.7.1 routes模块概述 92
4.7.2 使用示例 93
4.8 综合实例 94
4.9 本章小结 98
第5章 RabbitMQ 99
5.1 RabbitMQ简介 99
5.2 RabbitMQ流程 101
5.2.1 单向发送消息 101
5.2.2 队列 103
5.2.3 交换 106
5.2.4 路由 109
5.2.5 主题 111
5.2.6 RPC调用 114
5.3 RabbitMQ 持久化 119
5.4 本章小结 120
第6章 DevStack 121
6.1 DevStack介绍 121
6.2 操作系统的安装与配置 121
6.2.1 VMware虚拟机的配置 121
6.2.2 系统配置 123
6.3 环境准备与配置 126
6.3.1 DevStack准备 126
6.3.2 配置local.conf文件 127
6.4 安装DevStack 128
6.5 环境验证 128
6.5.1 登录验证 128
6.5.2 创建网络 130
6.5.3 创建实例 132
6.5.4 验证实例网络 134
6.5.5 OpenStack版本 136
6.6 错误分析 136
6.6.1 日志目录 136
6.6.2 使用Git下载代码出错 137
6.6.3 网络配置错误 137
6.6.4 重新部署 137
6.7 本章小结 138
第7章 开发小试 139
7.1 screen简介 139
7.1.1 screen的进入 139
7.1.2 screen的使用 140
7.1.3 screen的退出 142
7.2 API调试 142
7.2.1 API 142
7.2.2 RESTClient工具 145
7.2.3 Curl实验 151
7.2.4 错误分析 155
7.3 OpenStack界面主题的修改 157
7.3.1 替换logo 157
7.3.2 修改样式 159
7.4 本章小结 164
第8章 Django框架 165
8.1 安装Django 165
8.2 Django的架构 169
8.3 创建项目 170
8.3.1 Django管理工具 171
8.3.2 测试站点 172
8.3.3 增加一个APP 174
8.4 使用数据库 176
8.4.1 连接数据库 176
8.4.2 创立模型 177
8.4.3 显示记录 179
8.5 模板 180
8.5.1 使用模板 180
8.5.2 流程分析 182
8.5.3 使用循环 182
8.5.4 模板继承 184
8.6 表单 185
8.6.1 提交表单(GET方法) 185
8.6.2 提交表单(POST方法) 186
8.7 存储数据 187
8.8 表单对象 188
8.9 admin管理 190
8.9.1 默认管理 190
8.9.2 复杂的模型 191
8.9.3 自定义页面 192
8.9.4 Inline显示 193
8.9.5 列表页的显示 194
8.10 错误分析 196
8.11 本章小结 198
第9章 Dashboard的开发 199
9.1 Dashboard概述 199
9.2 源码解析 200
9.2.1 UI整体结构 200
9.2.2 初识Dashboard 201
9.2.3 项目结构 203
9.3 自定义Dashboard和Panel 207
9.3.1 手工启动Dashboard工程 207
9.3.2 创建Dashboard 207
9.3.3 创建mypanel 208
9.3.4 编写代码 209
9.3.5 验证代码 215
9.4 复杂的action table 217
9.4.1 定义view 217
9.4.2 增加URL 219
9.4.3 定义action 220
9.4.4 测试 220
9.5 Horizon开发相关内容 222
9.5.1 汉化 222
9.5.2 workflows 222
9.5.3 JavaScript 224
9.6 错误分析 225
9.7 本章小结 227
第10章 Nova组件 228
10.1 组件介绍 228
10.1.1 OpenStack的版本 228
10.1.2 组件的组成 228
10.1.3 组件之间的关系 229
10.1.4 API的使用 230
10.2 虚拟创建过程详解 230
10.3 Nova源码分析 233
10.3.1 目录结构 233
10.3.2 重要目录详解 236
10.4 Nova调用关系分析 240
10.4.1 创建虚拟机过程源码追溯 240
10.4.2 创建虚拟机过程调用流程函数分析 241
10.4.3 Nova和AMQP的关系 243
10.5 开始实践 246
10.6 API V2.1说明 248
10.6.1 compatibility 249
10.6.2 Validation 249
10.6.3 Microversion 249
10.7 编码 251
10.7.1 示例编码 251
10.7.2 官方代码参考 252
10.7.3 Nova代码实现示例 258
10.8 调试并修复nova-compute的所有协程卡住的问题 262
10.9 本章小结 269
第11章 Neutron组件 270
11.1 Neutron基础 270
11.1.1 服务及组件介绍 270
11.1.2 Neutron架构 271
11.1.3 Neutron抽象出的概念 272
11.1.4 Linux网络基础 272
11.2 实例网络详解 273
11.2.1 硬件配置及网络拓扑 273
11.2.2 各个节点服务关系及说明 274
11.2.3 场景举例 277
11.3 Neutron的源码分析 282
11.3.1 目录结构 283
11.3.2 重要目录详解 285
11.3.3 Neutron启动分析 288
11.4 Neutron组件扩展 293
11.4.1 编写代码 293
11.4.2 重启服务 295
11.4.3 测试 296
11.5 本章小结 297
第12章 测试技术 298
12.1 OpenStack测试基础 298
12.2 单元测试 299
12.3 集成测试 301
12.4 本章小结 303
附录A Mitaka国内代码贡献 304
附录B Newton新特性 307
附录C Ocata版本新特性 309
附录D Git代码管理命令 314
前言/序言
Preface 前 言为什么写这本书从2010年7月至今,OpenStack已经发布了15个版本,并成为云计算基础架构(IaaS)的事实标准。目前OpenStack也被国内企业接受,包括中国移动通信集团公司、中国电信集团公司、中国银联股份有限公司、中国国电集团公司等都在直接或间接使用OpenStack。
随着云的普及,越来越多的业务部署并运行在OpenStack云中,原生的OpenStack的界面及功能已经远远不能满足需求,有规模的企业寻求定制自己的OpenStack,其中包括界面的定制、计算和网络等功能的增强等。而与OpenStack相关的创业公司经过几年的发展,都已经有了自己成熟的产品,这些公司如今不再为温饱而四处奔波,也已经从“卖人”转向出售自有产品。随着OpenStack创业公司规模不断扩大,原有人员远远不能满足需求,熟悉OpenStack开发的人员更是难寻,除了在“云圈子”寻找人才外,很大一部分是从Java、C++等专业人才中进行招聘,这些新人进入公司后,经过一段时间的培训,才能逐渐进入OpenStack开发的角色。
缺少OpenStack开发人员的原因主要有以下几方面。
1)开发人员首先要熟悉Linux操作系统,然后要熟悉OpenStack的相关概念,同时需要具有OpenStack相关安装部署经验。
2)开发人员要有良好的英文基础,能够看懂官方的英文文档。
3)OpenStack的开发语言为Python,很多高校没有开设相关课程,需要开发人员自己学习。
4)开源软件需要用到很多开源工具,包括Git、Curl、Jenkins等,这些工具都需要开发人员掌握。
这些条件和要求整合到一起,难度就陡然增加了,一名普通计算机专业的本科毕业生要从事OpenStack开发相关工作,至少要在OpenStack的开发企业中培训学习3个月左右;而一个云计算的开发企业,每次招收的毕业生、培养的新人是有限的,加在一起不超过千人,这些人员远远不能满足市场的需求。由此看来,OpenStack开发人员还是非常紧缺的,其待遇也是很不错的。
本书的主要内容和特色本书是根据北京海云捷迅科技有限公司内部培训教程重新整理编辑而成,内容包括Python语言基础及开发优化的原则和OpenStack组件及开发方面的知识,是一本系统、全面、讲解深入的开发类书籍,值得所有Python和OpenStack从业人员学习参考。本书特色如下:
1)有针对性地讲解了与OpenStack相关的Python专业知识。
2)全方位涵盖了OpenStack的技术知识,包括DevStack、开发基础、API调用、源码及结构分析、功能扩展等。
3)堪称零基础入门。本书包含详尽的操作步骤,还有详细图示操作指引及错误分析,带领读者步入OpenStack开发的殿堂。
4)第一次公开OpenStack开发企业内部资料——工程师的成长资料及资深工程师的日常工作记录,极具参考价值。
本书的知识体系全书共分八个部分:
第一部分(第1、2章):首先以若干名企业内部OpenStack开发人员的成长历程为例,讲解OpenStack开发人员应具备的知识体系;然后讲解了基本开发环境的搭建。
第二部分(第3、4章):不同于市面上的Python教材,本书以企业内部教程为主线,从企业应用角度讲解Python基础知识、优化原则和OpenStack中Python相关的模块知识。
第三部分(第5~7章):讲述了消息队列、DevStack开发环境及开发的相关知识,其中包含一些基本概念和技巧,是OpenStack开发人员必须掌握的入门知识。
第四部分(第8、9章):本部分首先用很多实例讲解了Horizon的开发框架Django,然后讲了Horizon界面结构,分析了Horizon的源代码,最后用示例完成Horizon的开发测试过程。
第五部分(第10章):本部分首先详述了Nova启动实例的流程,接着分析了Nova的源码,最后用示例讲述了微模块的开发过程。
第六部分(第11章):本部分首先讲述了OpenStack的部署拓扑和实例的数据流向分析,接着对Neutron的启动流程进行了跟踪分析,最后扩展了Neutron的extensions模块并测试其功能。
第七部分(第12章):本部分主要讲述了OpenStack测试的相关内容,包含开发人员个人的单元测试和团队的模块集成测试技术,为代码整合打好基础。
第八部分(附录A~D):首先附录A讲述了国内企业对OpenStack社区的贡献;附录B、C分别对OpenStack的Newton和 Ocata版本新特性进行了说明;附录D列举出Git代码管理命令供读者参考,希望可以为读者指明学习的方向。
本书面向的读者本书适用于想从事OpenStack开发及深入学习OpenStack的相关人员。本书也可以作为OpenStack的培训教材。
如何阅读本书OpenStack强调实践,希望读者能够把书中的示例代码都手动输入一遍,在输入运行代码的过程中可能会出现输入错误、语法错误等,读者可以自己尝试独立解决相关问题,逐渐增加自己的编程经验。
一定要去阅读和分析官方的源码,然后自己尝试去修改源码,只有这样才能锻炼自己的开发能力,逐步成为优秀的OpenStack开发人员。
致谢本书参考了部分官方文档以及北京海云捷迅科技有限公司的内部资料,得到了该公司周征晟、张加龙、叶东灿、郭姗、伍军、徐奡等开发人员的大力支持;还要感谢北京海云捷迅科技有限公司的张征宇和李华,在他们的大力支持下本书才得以完成。
感谢云技术社区创始人肖力老师,是肖老师推荐了华章分社杨福川副主编,还要感谢出版社其他工作人员,有了他们的共同努力,本书才得以正式出版。
由于编撰时间有限,加上OpenStack博大精深,版本更迭较快,文中有失效或分析不对的地方还请读者批评指正。
深度实践OpenStack:基于Python的OpenStack组件开发 电子书 下载 mobi epub pdf txt
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心
评分
☆☆☆☆☆
可以用一个词形容我的心情:恶心;四个人写一本书还写这么烂,真的是没谁了。为什么说烂呢,几乎所有的python代码都没有正确的缩进,也就是说,所有的代码如果写到程序里,都不会正常运行。四个家伙你们到底行不行,其他的语言,不讲究缩进就算了,这是python啊,缩进乱了,就等于大写的BUG。定价还那么贵。这么不认真,就不要学人家写书骗钱,OK?恶心