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 代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

%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会认为这是一个子包,它继承上层的NameVersionLicense等上层的内容。Sub-packages 用上级包的名字跟着它们自己的名字构成。这样,上面那段代码定义的Sub-package命名为 foobar-resource-agents(假设包的名字叫foobar)。


11.2.2 Debian


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


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


一个debian/control 代码例子如下:


1

2

3

4

5

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 文件应该包含的内容如下:


1

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


11.3 提交资源代理


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


创建一个上游仓库的工作拷贝(a Gitclone


1

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


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


1

2

3

4

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_.7man_MANS变量。这将自动从资源代理的元数据产生资源代理的手册页,并安装在正确的位置。


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


1

2

3

4

git add heartbeat/foobar

git add heartbeat/Makefile.am

git add doc/man/Makefile.am

git commit


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


1

git send-email  [email protected]

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


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


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


1

2

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


你可能感兴趣的:(中文版,ocf开发者指南)