在部署安裝open-falcon組件時(shí),利用ansible playbook進(jìn)行批量安裝部署,通過(guò)將falcon相關(guān)的文件拷貝到目標(biāo)機(jī)上,然后進(jìn)行配置、啟動(dòng)。然而這種拷貝的方式一點(diǎn)都不優(yōu)雅,并且也存在版本不一致的隱患。
??通過(guò)rpm打包生成相應(yīng)open-falcon組件的rpm包,并放入到公司自有的yum源中;其他機(jī)器就可以通過(guò)yum install/update *.rpm進(jìn)行直接安裝,整個(gè)過(guò)程so elegant. 今天我們就介紹下fpm這個(gè)打包工具。
一、centos安裝
yum -y install ruby rubygems ruby-devel
gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
gem install fpm
在ruby 1.8.7環(huán)境下會(huì)發(fā)生異常:
<code>/usr/lib/ruby/gems/1.8/gems/cabin-0.8.0/lib/cabin/mixins/logger.rb:12:in included': undefined method
options' for #<Cabin::Subscriber:0x2b712a9f6f98> (NoMethodError)</code>
在fpm github issue中 New version of cabin conflicts with FPM有解決方案:
- gem uninstall cabin
- gem install cabin -v 0.7.2
二、打包過(guò)程實(shí)例
我們就以open-falcon agent為例,將其打包,命令行如下:
fpm -f -s dir -t rpm -n falcon-agent -v 5.1.0 --epoch 0 --iteration 1.el6 -C ~/rpms/agent --verbose --category 'Development/App' --description 'falcon agent' --url 'github.com' --license 'BSD' --no-rpm-sign
在~/rpms/agent目錄下將falcon agent按照安裝后的目錄設(shè)定打包目錄,agent項(xiàng)目主要有兩個(gè)部分:
- /etc/init.d/open-falcon-agent: 控制腳本
- /home/falcon/agent/: 具體執(zhí)行目錄
在~/rpms/agent創(chuàng)建etc/init.d/和home/falcon/agent/目錄,將對(duì)應(yīng)的腳本和執(zhí)行文件拷貝到相應(yīng)目錄,執(zhí)行上述命令即可。
??fpm相關(guān)參數(shù)可在網(wǎng)上搜一大堆,就不累贅了,總之用了fpm,媽媽再也不擔(dān)心我打包困難了。將打包完成后的rpm包push到公司的本地yum源倉(cāng)庫(kù),后續(xù)的安裝和升級(jí)軟件就變得如此的簡(jiǎn)單了。