FPM初探之定製redis-cluster的rpm包

一、簡介

FPM是jordansissel使用ruby語言開發的一款打包軟件包的工具,fpm相比於rpmbuild,使用戶構建rpm等軟件包變得更加簡單便捷。

支持的源類型:

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

支持的目標類型

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

二、安裝fpm

centos7:

2.1、安裝ruby

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

2.2、安裝fpm

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

2.3、查看fpm版本

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

三、部署redis_cluster節點

部署詳見:redis-cluster部署

3.1、創建打包目錄

mkdir /home/redis/redis_cluster

3.2、打包目錄中包含的文件

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目錄下

[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

三、通過fpm打包

3.1、查看幫助

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 --help

3.2、打包

[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.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 --help

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章