在部署安装open-falcon组件时,利用ansible playbook进行批量安装部署,通过将falcon相关的文件拷贝到目标机上,然后进行配置、启动。然而这种拷贝的方式一点都不优雅,并且也存在版本不一致的隐患。
通过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环境下会发生异常:
<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/: 具体执行目录
在~/rpms/agent创建etc/init.d/和home/falcon/agent/目录,将对应的脚本和执行文件拷贝到相应目录,执行上述命令即可。
fpm相关参数可在网上搜一大堆,就不累赘了,总之用了fpm,妈妈再也不担心我打包困难了。将打包完成后的rpm包push到公司的本地yum源仓库,后续的安装和升级软件就变得如此的简单了。