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/