Glide Note

glidenote's blog

ソフトウェアの自前ビルド環境をVagrantで管理する

ここ1年くらい自分が担当しているサービスで使ってるNginxとか自前ビルドが必要なソフトは RPMを作らずビルドサーバでビルドしたバイナリをpuppetで管理して、 プロダクション環境にはpuppetやらデプロイツールなりで、バイナリ差し替え配布している。 (epelとかにrpmがあって、それがそのまま使えれば、基本的にそれを使ってるので、 自前ビルドしているパッケージはごく少数です。)

なんでRPMを作らないかは@hirose31さんのブログを読むと分かります!!

バージョンアップ、脆弱性対応、モジュールを追加などのたびにビルドし直さないといけなくて、 普通にやってると結構面倒くさい作業なので、Vagrantを使ってビルドしてる。

具体的にNginxを例に説明すると、下記のような感じのファイルを用意して、vagrant upだけでバイナリが作成される。

上の例だと

/tmp/build/nginx-1.7.1/objs/nginxにバイナリが出来上がるので、 それをpuppetのリポジトリに入れて、puppet各サーバで流して終わり。

アップデートや、モジュールを追加する場合は、provision.shを修正するだけで、 ビルドが終わったらvagrant destroyでビルドサーバを削除。

Vagrantfileprovision.shをgit管理しておけば、ビルド環境もバージョン管理が出来るし、 たいていこういう作業は忘れた頃に発生して毎回過去のissueを探したり面倒くさいので Vagrant使うと大変便利という話。

参考

Comments