在部署安裝open-falcon組件時,利用ansible playbook進行批量安裝部署惨篱,通過將falcon相關的文件拷貝到目標機上火脉,然后進行配置、啟動堂污。然而這種拷貝的方式一點都不優(yōu)雅家肯,并且也存在版本不一致的隱患。
??通過rpm打包生成相應open-falcon組件的rpm包盟猖,并放入到公司自有的yum源中讨衣;其他機器就可以通過yum install/update *.rpm進行直接安裝,整個過程so elegant. 今天我們就介紹下fpm這個打包工具式镐。
一反镇、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)境下會發(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
二、打包過程實例
我們就以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按照安裝后的目錄設定打包目錄,agent項目主要有兩個部分:
- /etc/init.d/open-falcon-agent: 控制腳本
- /home/falcon/agent/: 具體執(zhí)行目錄
在~/rpms/agent創(chuàng)建etc/init.d/和home/falcon/agent/目錄,將對應的腳本和執(zhí)行文件拷貝到相應目錄惊豺,執(zhí)行上述命令即可燎孟。
??fpm相關參數可在網上搜一大堆,就不累贅了尸昧,總之用了fpm揩页,媽媽再也不擔心我打包困難了。將打包完成后的rpm包push到公司的本地yum源倉庫烹俗,后續(xù)的安裝和升級軟件就變得如此的簡單了爆侣。