第1章 初识OpenStack 1
1.1 从虚拟化到OpenStack 1
1.1.1 虚拟化 1
1.1.2 云计算 2
1.1.3 OpenStack 4
1.2 OpenStack体系结构 6
1.3 OpenStack项目发展流程 13
1.3.1 新项目 14
1.3.2 孵化项目 14
1.3.3 核心项目及集成项目 15
1.4 OpenStack社区 15
1.4.1 邮件列表 16
1.4.2 IRC和项目例会 16
1.4.3 Summit和Meetup 17
1.4.4 其他社交平台 19
1.5 其他开源项目 19
第2章 OpenStack开发基础 22
2.1 相关开发资源 22
2.1.1 OpenStack社区 22
2.1.2 OpenStack文档 22
2.1.3 OpenStack书籍 23
2.1.4 其他网络资源 24
2.2 OpenStack开发的技术基础 25
2.3 部署开发环境 26
2.3.1 Git 26
2.3.2 Devstack 27
2.4 浏览OpenStack源代码 31
2.4.1 源码目录结构 31
2.4.2 浏览代码的工具 33
2.4.3 分析源码如何入手 35
2.5 OpenStack代码质量保证体系 38
2.5.1 编码规范 40
2.5.2 代码评审Gerrit 43
2.5.3 单元测试Tox 48
2.5.4 持续集成Jenkins 51
2.6 如何贡献 54
2.6.1 文档 54
2.6.2 修补Bug 55
2.6.3 增加Feature 57
2.6.4 Review 60
2.6.5 调试 61
第3章 虚拟化 62
3.1 概述 62
3.1.1 虚拟化实现方式 64
3.1.2 虚拟化现状和未来 66
3.2 高层管理工具 74
3.2.1 XenAPI 74
3.2.2 Libvirt 75
3.3 OpenStack相关实现 84
3.3.1 Libvirt驱动 84
3.3.2 XenAPI驱动 86
第4章 OpenStack通用技术 88
4.1 消息总线 88
4.2 SQLAlchemy和数据库(Shane) 92
4.3 RESTful API和WSGI 96
4.4 Eventlet 103
4.5 OpenStack通用库Oslo 106
4.5.1 Cliff 107
4.5.2 oslo.config 111
4.5.3 oslo.db 113
4.5.4 oslo.il8n 116
4.5.5 oslo.messaging 116
4.5.6 stevedore 123
4.5.7 TaskFlow 127
4.5.8 cookiecutter 133
4.5.9 oslo.policy 134
4.5.10 oslo.rootwrap 135
4.5.11 oslo.test 138
第5章 计算 141
5.1 Nova体系结构 141
5.2 Nova API 148
5.2.1 Nova API执行过程 149
5.2.2 Nova API的实现 155
5.3 Conductor服务 161
5.3.1 Object Model 163
5.4 Scheduler 166
5.4.1 调度器 166
5.4.2 Filtering 167
5.4.3 Weighting 169
5.5 Compute 169
5.6 典型工作流程 176
5.6.1 创建虚拟机 176
5.6.2 冷迁移与Resize 178
5.6.3 热迁移 179
5.6.4 挂起和恢复 181
5.6.5 Rebuild和Evacuate 182
第6章 存储 183
6.1 Swift 183
6.1.1 Swift体系结构 183
6.1.2 Ring 191
6.1.3 Swift API 202
6.1.4 认证 210
6.1.5 对象管理与操作 211
6.1.6 数据一致性 215
6.2 Cinder 218
6.2.1 Cinder体系结构 218
6.2.2 Cinder API 222
6.2.3 cinder-scheduler 224
6.2.4 cinder-volume 226
6.2.5 cinder-backup 230
6.3 Glance 232
6.3.1 Glance体系结构 232
6.3.2 Glance API 234
第7章 网络 240
7.1 Neutron体系结构 240
7.1.1 Linux虚拟网络 241
7.1.2 Neutron网络抽象 245
7.1.3 Neutron架构 246
7.1.4 Neutron源码结构 247
7.2 Neutron API 249
7.2.1 neutron-server 250
7.3 ML2 Plugin 251
7.4 Port Binding扩展 257
7.5 Open vSwitch Agent 260
7.6 Service Plugin 267
7.6.1 Firewall 267
7.6.2 LoadBalance 269
7.7 Neutron热点话题 270
7.7.1 DVR 271
7.7.2 SDN 271
7.7.3 NFV/SRIOV 272
第8章 安全 274
8.1 OpenStack安全概述 274
8.2 Keystone 275
8.2.1 Keystone体系结构 275
8.2.2 Keystone启动过程 281
8.2.3 用户认证及令牌获取 283
8.2.4 签名证书生成 286
8.3 可信计算池 288
8.3.1 体系结构 289
8.3.2 Intel TXT与TBoot 290
8.3.3 可信认证与OpenAttestation项目 292
8.3.4 TrustedFilter 295
8.3.5 部署 297
8.4 OpenStack安全指南 298
8.4.1 安全域及威胁分类 298
8.4.2 通用的安全指引 302
8.4.3 OpenStack组件的安全 302
第9章 计量与监控 305
9.1 Ceilometer体系架构 305
9.1.1 Pipeline 308
9.1.2 Polling Agent与Pollster插件 310
9.1.3 Notification Agent与Notification Listeners插件 311
9.1.4 Collector与Dispatcher插件 311
9.1.5 Storage/DB 312
9.1.6 API Server 313
9.1.7 Alarm相关 314
9.2 部署与使用 315
9.2.1 选择数据库 315
9.2.2 安装 316
9.2.3 配置 320
9.2.4 使用 323
9.3 Ceilometer插件的开发 323
9.3.1 Pollster 324
9.3.2 Notification Listener 325
9.3.3 DB Backend Driver 326
9.3.4 Compute Agent Inspector 331
9.3.5 Publisher 332
9.3.6 Discover 332
第10章 部署 334
10.1 TripleO体系结构 334
10.1.1 DiskImage-Builder 336
10.1.2 Ironic 337
10.1.3 Heat 339
10.1.4 OS-Configuration 341
10.2 TripleO部署范例 342
10.2.1 制作镜像 342
10.2.2 搭建UnderCloud 345
10.2.3 搭建OverCloud 349
10.3 TripleO新特性 351
10.3.1 iPXE 351
10.3.2 Tuskar 351
10.3.3 Ironic-python-agent 352
10.3.4 Hash-ring 352
10.3.5 Driver-factory 352
第11章 控制面板 353
11.1 Horizon体系结构 353
11.1.1 Horizon与Django 353
11.1.2 Horizon网站布局 355
11.1.3 Horzion源码结构 356
11.2 Horizon部署 358
11.3 页面渲染流程 360