このドキュメントでは、すでに公開されているCookbookを自分のローカル環境で実行できるまでの環境を作成することを目的としている。Chefの準備が整った後で、お試しにrbevn
+ Ruby
をインストールする。
必要なgemを準備
今回はBerkshelf
をCookbookの管理に用いたいので、一緒にインストールする。
gem install berkshelf
gem install knife-solo
又は
gem 'berkshelf'
gem 'knife-solo'
bundle install --path=.bundle
bundle
でgem
をインストールした場合は、bundle exec
を付けて実行。
Chefの準備
サーバでChefが実行できるようにする
今回、検証環境としてvagrant
を用いている。
knife soloを使う場合は、リモート側にrsyncをインストールしておく。
yum install rsync
knife solo prepare user@192.168.***.***
実行後、nodeディレクトリ以下にjsonファイルが作成される。
$ cat nodes/192.168.***.***.json
{
"run_list": [
],
"automatic": {
"ipaddress": "192.168.77.77"
}
Berkshelfの準備
Berkshelfを利用できるようにする
berks init
Berksfileを編集
※今回はrbenvをお試してでインストールする。
site :opscode
cookbook "rbenv"
Cookbookの準備
berkshelf
を用いて、Cookbookを外部から取得する。
Cookbookの取得
berks vender
recipeの準備
recipeの中でrbenvがインストールされるようにする
既存のCookbookにrecipeとmetadata.rbがある場合、以下を追加。
# recipe
include_recipe "rbenv::default"
include_recipe "rbenv::ruby_build"
include_recipe "rbenv::rbenv_vars"
rbenv_ruby "2.1.1" do
ruby_version "2.1.1"
global true
end
# metadata.rb
depends 'rbenv'
新たにCookbookを追加する場合は、Cookbookを作成後にrecipe
とmetadata.rb
それぞれに上記を追加。
knife cookbook create rbenv-install
knifeでChef Soloを実行
knife solo cook user@192.168.***.***