星期三, 九月 11, 2013

OCF开发者指南 第十一章

11 安装和打包资源代理

这一章讨论在你编码和测试完成之后你要做的事情----在哪里安装,如何将它包含在你自己的应用包里或者Linux-HA资源代理库里面。

11.1 安装资源代理

如果你希望在你自己的项目中包含你的资源代理,必须将其安装在正确的位置。资源代理应该安装在/usr/lib/ocf/resource.d/  目录, 是你项目的名字或者其他你想用的名字。

比如,如果你的foobar 资源代理被打包成你fortytwo项目的一部分,那么其完整的路径应该是/usr/lib/ocf/resource.d/fortytwo/foobar。确定你的资源代理有755 (-rwxr-xr-x)权限。

当以此方式安装了,OCF兼容的集群资源管理将会正确的定位、解析和执行你的资源代理。比如Pacemaker集群管理会将会将上面的路径映射为ocf:fortytwo:foobar 资源代理标识。

11.2 打包资源代理


如果你的资源代理是你的项目的一部分,你应该注意本节提到的一些要点。
注意:如果你希望提交你的资源代理到Linux-HA资源代理库,可以参考11.3节, 提交资源代理。

11.2.1 RPM包

推荐将你的资源代理打包为RPM时, 使用名字 -resource-agents。确保包可以放在provider目录里面,并依赖上层目录和脚本函数。一个RPM spec 代码如下:

 
%package resource-agents
Summary: OCF resource agent for Foobar
Group: System Environment/Base
Requires: %{name} = %{version}-%{release}, resource-agents

%description resource-agents
This package contains the OCF-compliant resource agents for Foobar.

%files resource-agents
%defattr(755,root,root,-)
%dir %{_prefix}/lib/ocf/resource.d/fortytwo
%{_prefix}/lib/ocf/resource.d/fortytwo/foobar

注意:如果RPM spec 文件包含一个%package 声明,RPM会认为这是一个子包,它继承上层的Name,Version,License等上层的内容。Sub-packages 用上级包的名字跟着它们自己的名字构成。这样,上面那段代码定义的Sub-package命名为 foobar-resource-agents(假设包的名字叫foobar)。

11.2.2 Debian 包

对于Debian的包,像RPM一样,推荐使用独立的包来保存你的资源代理,但是又依赖于cluster-agents 包。

注意:这里假设使用debhelper制作deb包。

一个debian/control 代码例子如下:
Package: foobar-cluster-agents
Priority: extra
Architecture: all
Depends: cluster-agents
Description: OCF-compliant resource agents for Foobar


也可以创建一个独立的 .install 文件。按上面的例子,安装foobar资源代理,为fortytwo的一个子包,debian/fortytwo-cluster-agents  .install 文件应该包含的内容如下:

usr/lib/ocf/resource.d/fortytwo/foobar


11.3 提交资源代理

如果不将资源代理作为自己项目的一部分,而上提交到资源代理软件仓库 (ClusterLabs repository on GitHub),可以遵循如下步骤。

创建一个上游仓库的工作拷贝(a Git clone)

git clone git://github.com/ClusterLabs/resource-agents


然后拷贝你的资源代理到你的heartbeat子目录

cd resource-agents/heartbeat
cp /path/to/your/local/copy/of/foobar .
chmod 0755 foobar
cd ..


下一步,修改resource-agents/heartbeat目录下的Makefile.am文件,增加你的资源代理ocf_SCRIPTS列表。这可以保证你资源代理被正确的安装。

最后,在resource-agents/doc/man目录打开Makefile.am文件,并增加ocf_heartbeat_.7 到man_MANS变量。这将自动从资源代理的元数据产生资源代理的手册页, 并安装在正确的位置。

现在,添加你的资源代理,和你修改的Makefile:



git add heartbeat/foobar
git add heartbeat/Makefile.am
git add doc/man/Makefile.am
git commit


提交时候的消息,最好是提供一句有意义的话。比如


git send-email --to=linux-ha-dev@lists.linux-ha.org

补丁集最好在mailing list上提供一个声明或者通知。

git send-email 会以一个良好的格式组织本次的更新并提交到邮件列表。具体细节可以参考git-send-mail的手册页。

一旦你的提交被接受,上游开发者会讲你的补丁推到上游资源库。这个时候,你可以直接从上游库更新,删掉自己的补丁集。


git reset --hard origin/master
git pull

11.4 维护资源代理

如果你为一个特定的资源代理,或者,你正对某一块代码反复贡献,最好在GitHub上开一个分支。

如果你要这么做:
  • 创建一个GitHub帐号(如果你是新用户)
  • Fork resource-agents 软件仓库
  • 克隆你创建的分支到本地工作版本
如果你开发资源代理,可以经常提交,并早提交。你可以之后经常通过 git rebase i 合并你的提交。

如果你做的提交希望一些人能看到,评审。将他们加入你的GitHub分支,并发送邮件到linux-ha-dev邮件列表,在邮件中指明这些人。

这些都做完之后,按照要求做了改变,你可以发出一个pull请求。有两种办法:
  • 你可以使用 git request-pull 应用来获得一个预先组织好的框架,这个框架对你所做改变做了总结。你可以增加你要的信息,并将其发送的邮件列表。最好在你的邮件主题前缀定为[GIT PULL],这样上游开发者可以比较容易获得信息。
  • 你也可以直接给GitHub发出请求,GitHub通过邮件自动通知上游开发者。具体细节可以查看github:help。

没有评论: