1、语言上的建议:学好python。
OpenStack是纯python工程,所以你必须要熟悉python的语法、调试、调用。比如:
- pdb:基础使用,断点,调用栈
- 日志:调用栈打印,函数入参打印,底层命令打印
- 涉及的python开源框架、组件:如SQLAlchemy、Django
- 面向对象:清楚抽象、继承、多态、组合等概念
- 语法:更钟意字典、处处解耦的思想等
- 编码规则:去读一读PEP8。
2、快速学习OpenStack的建议:
- 框架,问google:
- google image中把OpenStack的图筛选一遍,把画的最好的拿出来仔细研究,弄清楚各个部件的角色、通信机制。
- 北向:把官方手册过一遍,记住各个组件的功能与接口。
- 南向:搞清楚虚拟机的生命周期
- 以及主要涉及到的底层函数,xml文件如何构造,和libvirt如何衔接
- 对KVM和XEN的适配不同点
- 组件:抛弃devstack,自己手动架一次OpenStack,理清各个组件的用途
- 看懂各个组件的关系与交互方法 —— RabbitMQ、scheduler等组件/模块
- 弄清楚各个组件提供的接口,一般接口都是稳定的,定义好了就不会变(如*_client)
- 技术:
- 弄清楚RESTful api、wsgi、eventlet等技术点
- 看一看有意思的实现,如L2 population。
- 业界:看看每个组件的贡献度,哪家公司掌握了哪一块。比如nicira/cisco在里面是什么角色。
3、
想看懂OpenStack很容易,但精通很难。
建议先从一个组件的某个点着手,比如:
- 虚拟机的生命周期
- nova-compute对底层libvirt的调用
- nova-scheduler的调度机制等等
祝你能持之以恒。
2013/6/11 更新:
看一个东西,一般都要循序渐进。
- 先了解它的整体架构,搞清楚为什么要用这样的架构;
- 然后再了解架构中的各个组件,组件提供的主要功能与各个组件之间的交互;
- 然后深入组件中的某个模块,分析模块的用途,理解模块所涉及的理论;
- 最后才是看模块中的代码,分析代码流程,交互走向,验证之前的分析,得到具体结论。
下面是我一朋友想要学习openstack,我给他列的一个学习清单,希望对你有所帮助
博客:
陈沙克:
quqi99:
kong:
Unitedstack:
IBM openstack:
IBM developerWorks 中国 : Cloud computing : 文档库
IBM 龚永生:
OpenStack官方博客:
me:
(待更新)
其他:
openstack资源整理:
OpenStack 源码解读及相关:
进阶:
OpenStack 管理员手册:
OpenStack 开发手册:
HowTo Contribute:
Final:
1. 官网 + WIKI:
2. 邮件列表:
3. 源码:
4. bugs, features, QA:
(选择合适的子项目 (Projects))
5. 代码审核:
6. 文档库:
7. IRC:
IRC - OpenStack
8. OpenStack会 + IRC:
9. Codes statistics:
http://stackalytics.com/