Chef SoloのRPMを作成してみた
Chef Soloをインストールするには、ビルドに必要なライブラリのインストールが必要だったり、gemでインストールが必要だったりする。インストール時間の短縮と、クローズドなネットワーク環境でもインストールできるようにrpmを作成してみた。
rpmを作成する
Chefはrubyでできているので、Gemでパッケージされている。fpmを使えばどうやらgemからrpmを作成できるらしい。gem以外にも対応しているし、rpm以外にdebなんかも出力できるようだ!
今回はこのfpmを使ってやってみた*1。作成環境は、CentOS 6.2 x86_64、前提としてChef Soloがインストールできるよう、rubyやrubygems、コンパイルに必要なライブラリが入っていること。ruby、rubygemsはyumでOS標準のものをインストールしていること。
- まずはfpmをインストール。fpm自体もRubyでできており、gemで簡単にインストールできる。
gem install fpm
ここからはConverting rubygems · jordansissel/fpm Wiki · GitHubを参考にgem -> rpm化を行う。
- Chef Soloと依存gemを/tmp/gems以下に集める。
mkdir /tmp/gems gem install --no-ri --no-rdoc --install-dir /tmp/gems chef
- 集めたgemファイルをfpmコマンドでrpm化する。以下のコマンドで一気に実行可能です。
find /tmp/gems/cache -name '*.gem' | xargs -rn1 fpm -s gem -t rpm
これで依存関係のあるgemも含めてまとめてrpm化することができた。