原文:https://www.openshift.com/developers/download-cartridges
翻译水平有限,并只做个人参考,由于没使用online版本的,所以翻译了一部分
PS:使用git上的OpenShift Cartridge,如果有现成的话,直接引用metadata/manifest.yml的raw文件到coding anything的url上即可
在OpenShift中,cartridge不限制于我们提供的和安全维护栈。你也能够在自己的应用上随意部署自己的cartridge,提供一个广阔的技术支持。为了部署这些定制的cartridge,你只需要在控制台中或命令行里简单地提供cartridge manifest的URL就行了。OpenShift将会自动下载安装这个cartridge。
任何的OpenShiftCartridge都能够被转换为可下载的cartridge。OpenShift接受一个从你的cartridge manifest中提供的URL(一个包含如何运行你的cartridge的YML格式的文档)和期望manifest中指向cartridge真实内同的URL。只要这个cartridge被安装,这些内容便会下载到你的应用中。
下面给出一个manifest的例子(以Go语言为例):
Name: go
Display-Name: Go1.1
Version:"1.1"
...
这个manifest的资源版本没有提供一个Source-Url属性,这意味着OpenShift不可能下载和安装这个cartridge。为了更正它,我们将会为manifest记录一个指向Git仓库的新版本:
Name: go
Display-Name: Go 1.1
Version: "1.1"
Source-Url: git@github.com:smarterclayton/openshift-go-cart.git
...
当你通过RHC工具来安装你的cartridge的时候,OpenShift将会识别URL作为一个Git仓库标识。
rhc create-app goapp https://github.com/smarterclayton/openshift-go-cart/blob/master/metadata/manifest.yml
我们将从你的Git仓库下载最新的内容到gear中。
善于观察的读者会发现这个方法的局限——不改变manifest.yml文件我无法对这个Git仓库建立分支和直接工作在副本上。大体上,直接将Source-url写死在文件中是不好的,因为它会阻止你在其他地方不部署你的仓库。另外,你可以使用最近版本的代码,不过会另分支(branches)与标识(tags)使用困难。围绕这个问题,我们已经介绍一对工具,利用OpenShift开放托管平台让你容易地安装和运行资源版本的cartridge。
开发一个cartridge牵涉到如何去建立一个OpenShift能够访问的cartridge与主机。CDK是一个运行在OpenShift上并在它Git仓库里面存储你的cartridge资源的应用,服务于你的cartridge的建立与版本维护。
你可以在OpenShift Online上创建你自己的CDK,并把Gocartridge的源代码包放入:
rhc create-app mycart http://cdk-claytondev.rhcloud.com --from-code="git://github.com/smarterclayton/openshift-go-cart.git"
这命令将会为CDK下载并安装作为可安装的cartridge最近版本的源代码。这堆源代码将作为一个Go cartridge的分支。一旦你创建了应用,便可以在浏览器上访问:
http://mycart-mydomain.rhcloud.com
你将会看到这个cartridge的提交列表并可以通过在分支之间转换来获得cartridge URL。随便复制一个manifest URL来建立cartridge。你并且可以通过URL把你的应用编程可以下载的cartridge,这将会获取你master分支的最近版本。
更多CDK详情可以看https://github.com/smarterclayton/openshift-cdk-cart
如果你只是想在Github上下载并运行你的cartridge,在OpenShift上有一个简单的应用运行方法,能够获取manifest并自动添加Source-url。这个映射器被放在cartreflect-claytondev.rhcloud.com(墙外)并接受一个Git仓库和项目名字。例如,访问:
http://cartreflect-claytondev.rhcloud.com/github/smarterclayton/openshift-go-cart
你将会见到manifest.yml的内容,外加一个在最后一行的Source-url。映射器会获取你的manifest内容并确定正确的URL,默认为master分支:
Source-Url: https://github.com/smarterclayton/openshift-go-cart/archive/master.zip
你现在能如下直接安装cartridge:
rhc create-app goapp "http://cartreflect-claytondev.rhcloud.com/github/smarterclayton/openshift-go-cart"
如果你想安装一个特定的分支,标识或提交,只需添加commit参数
rhc create-app goapp "http://cartreflect-claytondev.rhcloud.com/github/smarterclayton/openshift-go-cart?commit=d48e5b19333bcc8500cb11aef08eed457da7b9f8"
更多详情看https://github.com/smarterclayton/cartridge-reflector
为了避免被恶意用户滥用,OpenShift服务队它将下载的manifest设置了限制。你的manifest必须符合以下条件:
l 能够通过http或https从服务器获取
l 小于20K大小
l 获得的内容必须小于2次的重定向
l 下载必须小于10秒
另外,每个应用最多只能有5个可下载的cartridge