fpm打包

在部署安装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 methodoptions’ for #<Cabin::Subscriber:0x2b712a9f6f98> (NoMethodError)</code>
在fpm github issue中 New version of cabin conflicts with FPM有解决方案:

  1. gem uninstall cabin
  2. 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项目主要有两个部分:

  1. /etc/init.d/open-falcon-agent: 控制脚本
  2. /home/falcon/agent/: 具体执行目录

~/rpms/agent创建etc/init.d/和home/falcon/agent/目录,将对应的脚本和执行文件拷贝到相应目录,执行上述命令即可。
  fpm相关参数可在网上搜一大堆,就不累赘了,总之用了fpm,妈妈再也不担心我打包困难了。将打包完成后的rpm包push到公司的本地yum源仓库,后续的安装和升级软件就变得如此的简单了。

    原文作者:modeyangg_cs
    原文地址: https://www.jianshu.com/p/d64a9345d3c0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞