Jenkins の Cookbook をつくる
ここまでの話を踏まえて、実際に Cookbook を作ってみてください。
作成するのは Jenkins をインストールする Cookbook です。
Jenkins とは
継続的インテグレーションツールです。
http://jenkins-ci.org/
もともとは Java や C などの一般的なプロジェクト(ソースコード)を対象にしたツールでしたが、
最近では Kitchen や Serverspec といった技術が出てきていて、Jenkins と組み合わせた「インフラCI」や「テスト駆動インフラ」が盛り上がってきています。
Chef を使っている方であれば、知っておいて損はないと思います。
手動でインストールするときの手順
Jenkins を手動でインストールするときの手順を確認します。
※ ハンズオンのために少しめんどうな手順でインストールしています。
http://pkg.jenkins-ci.org/redhat/ から rpm をダウンロード
$ wget http://pkg.jenkins-ci.org/redhat/jenkins-1.568-1.1.noarch.rpm
ダウンロードした rpm を yum コマンドでインストール
$ yum localinstall jenkins-1.566-1.1.noarch.rpm
/etc/sysconfig/jenkins を編集して、実行ユーザーを変更
$ sed -i 's/^JENKINS_USER="jenkins"/JENKINS_USER="kitchen"/' /etc/sysconfig/jenkins
利用するディレクトリのオーナーを変更
$ chown -R kitchen:kitchen /var/lib/jenkins $ chown -R kitchen:kitchen /var/log/jenkins $ chown -R kitchen:kitchen /var/cache/jenkins
サービスを登録・起動
$ service jenkins start $ chkconfig jenkins on
ヒント: 主な Resource
コマンドを実行する
execute Resource [ http://docs.opscode.com/resource_execute.html ]
ファイルをダウンロードする
remote_file Resource [ http://docs.opscode.com/resource_remote_file.html ]
※ ダウンロードしたファイルなどは /tmp ではなく Chef::Config[:file_cache_path] に保存する
パッケージをインストールする
package Resource [ http://docs.opscode.com/resource_package.html ]
テキストファイルの内容を置換する
ruby_block Resource [ http://docs.opscode.com/resource_ruby_block.html ]
Chef::Util::FIleEdit [ http://rubydoc.info/gems/chef/Chef/Util/FileEdit ]
※ execute Resource で sed コマンドを実行してもよい
※ file Resource + lazy でもできるかな?
ファイルやディレクトリのオーナーを変更する
ruby_block Resource [ http://docs.opscode.com/resource_ruby_block.html ]
FileUtils#chown_R [ http://docs.ruby-lang.org/ja/1.9.3/method/FileUtils/m/chown_R.html ]
※ execute Resource で chown コマンドを実行してもよい
サービスを起動する / 自動的に起動するように登録する
service Resource [ http://docs.opscode.com/resource_service.html ]