大致看了一下源码,然后参考redhat给的liveCD,分析出一些Openshift的大致运作方式。

首先:openshift是通过打包成RPM来安装的,redhat上面的https://openshift.redhat.com/community/wiki/rebuild-openshift-origin-packages就是再说如何将源程序build成为RPM文件。RPM大致介绍可以看http://en.wikipedia.org/wiki/RPM_Package_Manager。每个RPM都有一个以spec结尾的描述文件,build的时候这个描述文件来进行build。

从github上面取下来的源程序目录结构如下:


 

每个文件夹大致的内容:

 

  • build:这个文件夹是用来建立一个Openshift Origin的环境以及提供一个liveCD的kickstart(Installs the OpenShift Origin environment locally and provides a live-cd kickstart)。这个文件夹进入之后有两个内容,一个rakefile还有一个openshift origin的文件夹
    • rakefile是用来为ruby rake命令执行提供的描述文件。rake是ruby的一个类似与make的工具。我们来看一下这个rakefile大致的内容。rakefile里面定义了许多的task,可以在rake的时候显式地调用他们来执行相应的任务,当然task也是可以互相调用的。在这个文件中的task包括许多build、创建product或者dev的 cd、product或者dev的install。创建livecd,clean等。需要更多的研究
    • openshift origin里面首先可以看到一个spec文件,这个文件就是描述如何build RPM的。在那个rakefile中也可以看到对这个文件的引用:specs   = Dir.glob("#{basedir}/**/*.spec")。spec文件的格式可以参考:http://hlee.iteye.com/blog/343499。看其他的文件夹,这些剩下的文件夹大部分会被拷贝至目标安装系统的文件系统的某个位置,在spec的%install中可以找到相应的处理
      • config文件夹:配置的参数,包括ssh key、连接限制等
      • doc文件夹:就是对openshift的说明,一个get started的页面,另一个txt文件
      • init-script:如果没有搞错,应该是livecd的启动。里面的脚本写着:live: Late init script for live p_w_picpath。反正它必然是一个程序的启动脚本,因为最终被放到init.d里面去了
      • kickstart:不明。。
      • skel:放到/etc/skel/目录下面的一些,目前就两个desktop文件,就是livecd进去之后的一个gnome和一个firefox
  • cartridge:各种支持的cartridge。然后每个cartridge文件夹里面的结构也是比较简单的,就是一个spec文件和其他文件夹,spec文件描述如何将RPM安装至目标系统中。然后info文件夹是cartridge的主要运行脚本及数据所在。这个文件夹会被拷贝至目标系统文件系统中。比如在liveCD中,位置为:/user/libexec/stickshift/cartridges。至于在运行的时候如何调用info中的脚本,则应该是ruby的事情了
  • stickshift:ruby主程序。里面包括了其各个模块:broker、common、node、controller以及我不认识的abstract。每个模块当中都有相应的desc文件描述如何创建RPM。具体的就不清楚了,还没有分析
  • swingshift:是一个提供用户认证的可选插件,MD5+salt的方式。同时使用mongodb作为持久化存储。
  • uplift:提供动态DNS服务
  • gearchanger:message/log control
  • rel-eng:版本信息