生产中自己动手制作zabbix_agent的rpm安装包实战

生产中使用 Zabbix 监控,有可能因为环境的特殊性需要,根据操作系统的版本来动手制作 zabbix_agent 的软件安装包,故以我们生产中使用的自制 rpm 包给大家做一个参考,希望能帮助到需要的同学~

1.打包工具FPM简介

FPM功能简单说就是将一种类型的包转换为另一种类型

1.1 支持的源类型包

  • dir 将目录打包成所需要的类型,可以用于源码编译安装的软件包

  • rpm 对rpm进行转换

  • gem 对rubygem包进行转换

  • python 将python模型打包成相应的类型

1.2 支持的目标类型包

  • rpm 转换为rpm包

  • deb 转换为deb包

  • solaris 转换为solaris包

  • puppet 转换为puppet模块

2. FPM工具安装

安装ruby(ruby版本必须要在1.9.3以上,centos自带的是1.8的版本,需要自己编译安装)

wget https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0.tar.gz
tar zxvf ruby-2.7.0.tar.gz && cd ruby-2.7.0
./configure
make
make install
cat /etc/profile.d/ruby.sh
export PATH=/usr/local/bin/ruby:$PATH
source /etc/profile
# 添加ruby-china源
gem sources -a http://gems.ruby-china.com/
# 移除原生的Ruby仓库
gem sources --remove https://rubygems.org/
# 查看ruby源
gem source list
# 安装fpm
gem install fpm

3. zabbix agent编译安装及配置(省略)

4. 创建安装后脚本和卸载后脚本

(1) 创建安装后执行脚本,在文件安装到本地后会做一些初始化操作

cat /search/src/install_after.sh 
#!/bin/bash
#创建对应的用户和组以及日志目录,并给安装目录对应的权限
PREFIX="/usr/local/zabbix_agent"
zabbix_agentd="/etc/init.d/zabbix_agentd"
grep -q zabbix /etc/passwd
if [ $? -ne 0 ];then
    /usr/sbin/groupadd zabbix
    /usr/sbin/useradd -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
fi
mkdir -p "$PREFIX/logs"
chown -R zabbix.zabbix "$PREFIX"
\cp $PREFIX/bin/zabbix_agentd "$zabbix_agentd"
chmod +x "$zabbix_agentd"
exit 0

(2)创建卸载后清理脚本,会清理安装目录和前面安装脚本添加的一些设置

cat /search/src/remove_after.sh 
#!/bin/bash
#For rsync way of unloading
PREFIX="/usr/local/zabbix_agent"
pkill -9 zabbix_agentd
grep -q zabbix /etc/passwd
if [ $? -eq 0 ]
then
    userdel zabbix
fi
chkconfig --list|grep -q zabbix_agentd
if [ $? -eq 0 ]
then
    chkconfig --del zabbix_agentd
    chkconfig --level 35 zabbix_agentd off
fi
[ -f /etc/init.d/zabbix_agentd ] && rm -f /etc/init.d/zabbix_agentd
[ -d $PREFIX ] && mv "$PREFIX" /tmp/zabbix_$RANDOM
[ -d "/search/zabbix" ] && mv /search/zabbix /tmp/zabbix_$RANDOM
exit 0

5. 打RPM包

# 此处制作的是 redhat7 版本下的 zabbix_agentd 包,其他版本的系统请参考此方法制作
fpm -f -s dir -t rpm -n zabbix-agent-redhat7 --epoch 0 -v 4.4.6  \
-p /search/zabbix_rpm_package/ --verbose \
--post-install /search/src/install_after.sh \
--post-uninstall /search/src/remove_after.sh \
--no-rpm-sign /usr/local/zabbix_agent

FPM常用参数

参数 说明
-s 指定源类型
-t 指定目标类型,即想要制作成什么包
-n 指定包的名字
-v 指定包的版本号
-C 指定打包的相对路径
--no-rpm-sign 指定安装目录
-d 指定依赖于那些包
-f 第二次打包时目录下如果有同名安装包存在,则覆盖它
-p 输出的安装包的目录,不想放在当前目录下就需要指定
--post-install 软件包安装完成之后所要运行的脚本;同--offer-install
--pre-install 软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall 软件包卸载完成之后所要运行的脚本;同--offer-remove
--pre-uninstall 软件包卸载完成之前所要运行的脚本;同—before-remove
--description 软件包描述

注意:--no-rpm-sign才是安装目录

查看rpm包内容

rpm2cpio zabbix-agent-redhat6-3.2.6-1.x86_64.rpm |cpio -div

6. 安装卸载

# 安装
rpm -ivh zabbix-agent-redhat7-4.4.6-1.x86_64.rpm
# 卸载
rpm -qa|grep zabbix
rpm -e zabbix-agent-redhat7-4.4.6-1
posted @ 2021-04-08 20:26  临江仙我亦是行人  阅读(421)  评论(0编辑  收藏  举报