そういうことだったんですね

いろいろ調べたり学んだりしたことを忘れないように書き連ねています

chef - レシピの基礎(1)

一部を変数として使いたい

Attributes を使います。

設定方法は、/cookbooks/attributes/default.rb に、
以下のように指定します。

もちろんruby の文法が使えます。

attributes/default.rb

default["ruby"]["version"] = "2.1.0"

recipe中で使用するには node オブジェクトで参照します。

recipe/default.rb

package "ruby-#{node["ruby"]["version"]}" do
  action :install
end

ノード毎に違った値を変更したい

node の場合は、JSONファイルで指定します。

{
  "default": {
      "ruby": {"version": "2.0.0-p353"}
  }
}

優先順位は

1) attributes/ 以下で定義した値
2) JSON ファイルで指定した値

となります。

ある条件のとき実行する/させないようにしたい

recipe中で only_if/not_if を使います。

gem_package "rails" do
  action :install
  only_if { node["ruby"]["need_rails"] }
end

上記の場合、default["ruby"]["need_rails"] が true の場合、
インストールが行われます。


Chef: The Definitive Guide

Chef: The Definitive Guide