Ambari rpm包定制和ambari service定制

  Ambari rpm包定制

                        

Hadoophivesparkzookeeper hbasephoenix 使用apache版本的安装包进行重新打打包。

一、环境准备

1、配置rpm编译目录

vim ~/.rpmmacros

%_topdir /data/rpmbuild


二、解包和打包

1、首先安装rpmrebuild

yum install rpmrebuild

zookeeper为例(在安装了zookeeper的机器上执行)

1、先安装HDP版的zookeeper_2_5_3_0_37

2、然后对其rpm进行反编译

rpmrebuild  --spec-only=zookeeper-hdp.spec   zookeeper_2_5_3_0_37

 


 

3、下载apache zookeeper安装包,修改源码包,

通过命令tar -zcvf zookeeper_2_5_3_0_37-3.4.6.2.5.3.0.tar.gz zookeeper_2_5_3_0_37-3.4.6.2.5.3.0/*

重新打包为 zookeeper_2_5_3_0_37-3.4.6.2.5.3.0.tar.gz格式,

放到/data/rpmbuild/SOURCES/目录下

 

4、参照反编译出来的zookeeper rpm spec文件 ,修改成新的spec文件,放在SPEC/apache/下,通过命令rpmbuild -ba SPECS/apache/zookeeper.spec ,重新生成rpm

 

5、查看生成的rpm

ls RPMS/noarch/

 

6、替换软件仓库里面对应的rpm

软件仓库位置/www/HDP/centos

 

7、重建软件仓库,在/www/HDP/centos目录下执行createrepo -d .重建软件仓库包索引

8、在ambari-agent所在机器上,执行yum clean metadata 清除软件仓库旧索引,执行

yum update 重建索引,

9、界面安装

 

 

 

 

 

 

 

 

                                Ambari service自定义

1、ambari-server/var/lib/ambari-server/resources/stacks/{stack_name}/{stack_version}/目录下添加一个serverbase目录目录结构如下:

 

 

Metainfo.xml定义了服务的结构

Configuration定一个了在ambari安装服务界面的配置项

Pacakge是安装服务的脚本

 

1Metainfo.xml的一般结构是:

 

 

 

定义了一个component模块和一个configuration-depencies模块

Component模块定义了服务下各个模块的控制脚本

Configuration-dependencies定义了服务依赖的配置

 

2、configuration目录下的service-env.xml定义如下

 

这里配置项都会在界面上显示

 

 

3、控制脚本编写

package/scripts/tomcat.py为例

 

 

定义相关指令的执行脚本 ,对应界面上的相关操作

 

 

最终会调用到pacakge/script/tomcat_utils.py下的

 

 

 

 

操作的命令行调试法:

执行如下指令调用界面上对应操作的函数

Start函数是这样调用的,

python /var/lib/ambari-agent/cache/stacks/HDP/2.5/services/SERVERBASE/package/scripts/tomcat.py START  /var/lib/ambari-agent/data/command-1403.json  /var/lib/ambari-agent/cache/stacks/HDP/2.5/services/SERVERBASE/package/ /tmp/out.txt DEBUG /tmp

 

命令中的

command-1403.json编号是通过在界面上执行过相应指令后获取

 

 

 

 

4、自定义配置文件如何生成

catalina.sh如何生成为例

 

 

 

 

编写package/templates/catalina.j2模板,参考catalina.sh编写

 

 

 

CATALINA_PIDJAVA_HOME通过模板变量赋值

模板变量

Catalina_pid_filejava_home模板变量通过

package/scripts/params_linux.py定义

 

 

Parm_linux.py里面的变量可以通过config模块获取界面上的相关配置

这里通过service-env.xml获取

最终的文件通过tomcat_utils.py里的File函数生成

 

 

 

 

 

 

 

 

 

参考连接

https://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/pr01s02.html

https://galvinyang.github.io/2016/06/30/rebuildrpm/

https://cwiki.apache.org/confluence/display/AMBARI/Defining+a+Custom+Stack+and+Services

https://my.oschina.net/naqin/blog/389720

发布了30 篇原创文章 · 获赞 74 · 访问量 23万+

猜你喜欢

转载自blog.csdn.net/ruiyiin/article/details/80813921