chefでrvm環境を取り扱いたかったのでchef-rvmを利用してみる。
ついでにberkshelfでcookbookを管理してみる。
あまり他のレシピを利用するとかしたことなかったので勉強になったがこんなんで良いのかな?
環境
- Amazon Linux:2012.09
- rvmをシステム(/usr/local/rvm以下)にインストール済
- chefを以下の方法でインストール済
$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
- berkshelf:2.0.3インストール済
chefでchef-rvmを利用してみる
- ベース作成
$ mkdir hoge
$ cd hoge
$ berks init
- berkshelfでchef-rvm導入
$ echo "cookbook 'chef-rvm', git: 'https://github.com/fnichol/chef-rvm.git'" >> Berksfile
$ berks install --path cookbooks
- chef-rvmを利用するcookbook作成
- リソースの書き方がgithubにあるReadmeと違って苦労した
$ cd cookbooks
$ berks cookbook hoge
$ vi hoge/recipes/default.rb
$ cat vi hoge/recipes/default.rb
include_recipe "chef-rvm"
chef_rvm_ruby "jruby" do
action :install
end
$ echo "depends 'chef-rvm'" >> hoge/metadata.rb
$ cd ..
- chef-soloでの実行準備
$ mkdir .chef
$ vi .chef/solo.rb
$ cat .chef/solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path "/home/ec2-user/hoge/cookbooks"
$ vi .chef/chef.json
$ cat .chef/chef.json
{
"run_list": [ "recipe[hoge]" ]
}
- chef-soloで実行
- => rvmでjrubyがインストールされる
$ sudo chef-solo -c .chef/solo.rb -j .chef/chef.json
Starting Chef Client, version 11.4.4
Compiling Cookbooks...
Recipe: chef-rvm::default
* chef_gem[rvm] action install (up to date)
/home/ec2-user/chef-repo/cookbooks/chef-rvm/libraries/rvm_chef_user_environment.rb:49: warning: class variable access from toplevel
Converging 2 resources
* chef_gem[rvm] action install (up to date)
Recipe: hoge::default
* chef-rvm_ruby[jruby] action install/home/ec2-user/chef-repo/cookbooks/chef-rvm/libraries/rvm_chef_user_environment.rb:32: warning: class variable access from toplevel