FPM之定制redis-cluster包

1、简介

FPM是jordansissel使用ruby语言开发的一款打包软件包的工具,fpm相比于rpmbuild,使用户构建rpm等软件包变得更加简单便捷。html

支持的源类型:node

gem (even autodownloaded for you)
python modules (autodownload for you)
pear (also downloads for you)
directories
tar(.gz) archives
rpm
deb
node packages (npm)
pacman (ArchLinux) packages

支持的目标类型python

deb
rpm
solaris
freebsd
tar
directories
Mac OS X .pkg files (osxpkg)
pacman (ArchLinux) packages

2、安装fpm

centos7:git

2.一、安装ruby

yum install ruby-devel gcc make rpm-build rubygems -y

2.二、安装fpm

gem install --no-ri --no-rdoc fpm

2.三、查看fpm版本

fpm --version
目前最新版本为2019年1月出的1.11.0版

3、部署redis_cluster节点

部署详见:redis-cluster部署github

3.一、建立打包目录

mkdir /home/redis/redis_cluster

3.二、打包目录中包含的文件

redis-cli   redis-server  
redis-dmn.sh:redis守护脚本
redis_node_build.sh:建立redis节点(集群模式)脚本
script目录:放置开机启动service文件以及post和pre安装先后执行的脚本
start.sh:启动redis节点脚本

#!/bin/bash
workdir="/home/ceiec/redis_cluster"
killall redis-dmn.sh redis-server 
/bin/bash $workdir/redis_node_build.sh && /bin/bash $workdir/redis-dmn.sh

stop.sh:中止redis节点脚本
#!/bin/bash
killall redis-dmn.sh redis-server

script目录下redis

[root@node1 script]# cat post-install.sh 
#!/bin/bash
workdir="/home/ceiec/redis_cluster/"
#systemd manager
cp $workdir/script/redis.service /usr/lib/systemd/system/

[root@node1 script]# cat post-uninstall.sh 
#!/bin/bash

redis_workdir="/home/ceiec/redis_cluster"
rm -rf ${redis_workdir}

[root@node1 script]# cat pre-uninstall.sh 
#!/bin/bash
systemctl stop redis.service
rm -rf /usr/lib/systemd/system/redis.service 

[root@node1 script]# cat redis.service 
[Unit]
Description=redis-cluster services
After=network.target
[Service]
User=root
ExecStart=/bin/bash /home/ceiec/redis_cluster/start.sh
ExecStop=/bin/bash /home/ceiec/redis_cluster/stop.sh
[Install]
WantedBy=multi-user.target

3、经过fpm打包

3.一、查看帮助

fpm --help
使用格式:fpm [OPTIONS] [ARGS] ...
ARGS:源包的类型,对于dir(目录)来讲,包含指定目录中全部的目录和文件
OPTIONS:参数
-s, --input-type INPUT_TYPE:指定源包类型
-t, --output-type OUTPUT_TYPE:指定目标包类型
-p, --package OUTPUT:输出目标包的路径
-f, --force :强制输出目标包,覆盖输出路径下的同名包,默认关闭
-n, --name NAME:指定目标包名
--log LEVEL:指定记录日志级别error, warn, info, debug四级
--verbose:输出详细信息
-d, --depends DEPENDENCY:指定依赖包
--post-install FILE 与--after-install:软件包安装完成以后所要运行的脚本
--pre-install FILE 与 --before-install:软件包安装完成以前所要运行的脚本
--pre-uninstall FILE 与--before-remove:软件包卸载完成以前所要运行的脚本
--post-uninstall FILE 与--after-remove:软件包卸载完成以后所要运行的脚本
还有更多根据目标包类型可以使用的参数,详见 fpm --helpnpm

3.二、打包

[root@node1 ~]# fpm -s dir -t rpm -n redis -v 4.0.14 --post-install /home/ceiec/redis_cluster/script/post-install.sh --post-uninstall /home/ceiec/redis_cluster/script/post-uninstall.sh --pre-uninstall /home/ceiec/redis_cluster/script/pre-uninstall.sh -f /home/ceiec/redis_cluster/
Created package {:path=>"redis-4.0.14-1.x86_64.rpm"}

3.三、验证

[root@node2 ~]# rpm -ivh redis-4.0.14-1.x86_64.rpm 
[root@node2 ~]# systemctl start redis
[root@node2 ~]# systemctl status redis
● redis.service - redis-cluster services
   Loaded: loaded (/usr/lib/systemd/system/redis.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2019-05-09 05:13:50 PDT; 4s ago

参考文章:
FPM GitHub:https://github.com/jordansissel/fpm
FPM 官方文档:https://fpm.readthedocs.io/en/latest/intro.html
fpm --helpcentos

相关文章
相关标签/搜索