生产中自己动手制作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