Date June 10, 2014
Share このエントリーをはてなブックマークに追加

CIサーバが急に欲しくなったのでVagrant+Chef+BerkshelfでJenkinsをインストールした仮想環境を作ってみました。多分最短距離。

chef
Chef's hands at work by Rob van Hilten is licensed under CC BY-NC-SA 2.0

とにかくJenkinsが動いてる仮想サーバがほしいという人向け。そもそもVagrantって何だろとか気になる人はいろいろググってみてください。ただ日進月歩の世界なので情報が陳腐化する速度がとんでもないです。

Vagrant のインストールに gem を使ってるもの(今はインストーラーがあります)、 Vagrantfile のconfig.vm.network が :hostonly になってるもの、(同 :private_network) Berksfile に site :opscode と書かれているもの(同 source "https://api.berkshelf.com")は古い情報となってるので、できれば最新の原典を当たるのがベストです。

構成

VirtualBox
4.2.24
Downloads – Oracle VM VirtualBox
Vagrant
1.6.3
Download Vagrant - Vagrant
berks
3.1.3
Berkshelf
vagrant-berkshelf
2.0.1
vagrant plugin install vagrant-berkshelf --plugin-version ">= 2.0.1"
vagrant-omnibus
1.4.1
vagrant plugin install vagrant-omnibus
vagrant-vbguest
0.10.0
vagrant plugin install vagrant-vbguest

雛形の用意

適当なディレクトリで

berks cookbook myciserver

./myciserverに雛形ができます。

cd myciserver

Vagrantfileの編集

vim Vagrantfile

config.vm.network :private_network, ip: "192.168.33.10"

仮想環境のipを192.168.33.10に設定します。もし他のboxを利用したいなら、config.vm.box (必要ならconfig.vm.box_urlも)を書き換えます。今回はデフォルトのままで。

metadata.rb

vim metadata.rb

depends "jenkins"

Jenkinsを依存関係に追加します。

recipes/default.rb

vim recipes/default.rb

include_recipe 'apt'

node.default['jenkins']['master']['install_method']='package'
include_recipe 'jenkins::java'
include_recipe 'jenkins::master'

apt-getのアップデートをした後に、jenkinsのパッケージをインストールしますが、その前にjavaを入れる必要があります。

その他必要な設定があれば以下を参考に。

opscode-cookbooks/apt
opscode-cookbooks/jenkins

起動

vagrant up

boxのダウンロード、VirtualBox Guest Additionのインストール, パッケージの更新、jenkinsのインストールが自動的に行われます。(初回のみ。結構時間かかります)

Jenkins

ブラウザから192.168.33.10:8080にアクセスするとJenkinsのホーム画面が表示されるはずです。お疲れ様でした。

80番ポートからリダイレクトするならapache2とproxy及びproxy_httpモジュールをinclude_recipeして、sites-avarilableの設定が必要です。metadata.rbにdependsも忘れずに。

詳しくは以下を参照.

Installing Jenkins on Ubuntu - Jenkins - Jenkins Wiki
onehealth-cookbooks/apache2 Getting Started Writing Chef Cookbooks the Berkshelf Way, Part 1 - Mischa Taylor's Coding Blog

まとめ

裏で妖精さんが働き過ぎていて怖いくらいですが、最初にberks cookbook app_nameしておけば、metadata.rbにdepends、recipes/default.rbにinclude_recipeを書くだけで、berkshelfが勝手にリポジトリからcookbookを取ってきてchef経由で料理してくれるということがわかりました。vagrant-berkshelf恐るべし。

さて、せっかくセットアップしたJenkinsを何に使おうかなー。


Comments

comments powered by Disqus