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