制作一个简单的embedded cartridge

需求为,如果我想制作的cartridge,只具有一些文档,而不需要具有实际的编程环境

作为其他编程环境cartridge的附件插入该如何做呢?

首先,我使用的这个办法有一个小缺点,就是会占用一个cartridge(在online版本中挺珍贵的资源啊),但这样做我可以将一些我们的公共代码全部抽取出来放进去,当我们需要建立另外一个gear并需要使用相同模块的时候,便省下了很多功夫

我做的那个简单的demo在此


具体方法是:

通过openshift-origin-server源代码里面,cartridge包中的mock-plugin作为模板,删除我们不需要的东西

一个cartridge最主要的就是bin,env,metadata这三个目录,分别是执行脚本,环境变量与cartridge配置信息的所在位置。所以,我们就把整个模板除上述外的文件夹全部删除了,其他的目录是一些附加功能,详情请参考cartridge-developer-guide

bin/ 下我留了5个脚本文件,实际上使用的就只有setup脚本,这是在cartridge安装时环境变量初始化后执行的第一个脚本,demo中也很简单,把src目录整个复制到我们应用的repo目录;install脚本是在setup之后执行的,通过setup设置或改变的环境变量可以在这个脚本中使用;post_install顾名思义;control脚本是控制cartridge行为的脚本,start,restart等等,对于我这个demo暂时没有作用,所以全部执行都只是输出些文字;teardown脚本是在cartridge删除时使用的,可以作为清理脚本

env/下是自定义的全局环境变量

metadata/中,我就修改了manifest.yml文件,把我认为对我这个制作目标没影响的行都去除了,所以就变得比较简短了

     其中,比较重要的参数有:

Name,识别整个git仓库的

Cartridge-short-name,影响全局环境变量的命名,这里我进行修改了,所以所有的环境变量都要作相应的修改,如若改成AAA,则$OPENSHIFT_MOCK_PLUGIN_XXX变量就要变为$OPENSHIFT_AAA_XXX,各种环境变量也可以参考这里

Source-url,标明这个cartridge的网络位置,当然,你也可以封装成rpm包,当做普通的包安装,这个暂时没有研究,所以我是使用网络位置的

Categories,标明cartridge的种类,这里是embedded,其他种类还有web_framework,service等

Scaling,扩展性,默认就ok

Group-Overrides,说明cartridge的依赖关系,这里我是依赖了jbossews的,估计这个不写应该问题也不大

Endpoints,默认就行,用来做端口映射啊之类的工作的


所以,我这个cartridge的行为是很简单的,就只是把整个src目录复制到指定位置,暂时实现了我的需求,具体使用还要看实际的情况~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值