2014年4月16日水曜日

chefのnodeの参照の仕方についてメモ

■環境
Chef: 11.12.0
CentOS release 5.10 (Final)

■使い方
attributeで以下にように書くと
default['name'] = "kakakikikeke"
default['age'] = 28
recipesで以下のように参照できる
ruby_block "test_block2" do

  block do
    p node['name']
    p node['age']
  end

end

こんな感じで構造的に書くこともできる
default['info']['name'] = "kakakikikeke2"
default['info']['age'] = 280
参照するときはこんな感じ
ruby_block "test_block2" do

  block do
    p node['info']['name']
    p node['info']['age']
  end

end

chef-solo -j test.json みたいな感じでjsonを指定して実行している場合はjson側でattributeを上書きすることもできる
{
  "run_list":[
    "recipe[test]"
  ],
  "info":{
    "name":"hogehoge"
  }
}
上記の場合はrecipes側の「p node['info']['name']」を上書きする


あとはdefault.rb以外でnodeを定義した場合にはattributes/custom.rbを用意して
default['info']['address'] = "tokyo"
更にcustom.rbを使用する専用のレシピrecipes/custom.rbを用意して
ruby_block "test_block2" do

  block do
    p node['info']['address']
  end

end
そして、実行するjson側でcustom.rbのレシピを実行する必要がある
{
  "run_list":[
    "recipe[test::custom]"
  ],
  "info":{
    "name":"hogehoge"
  }
}


いつも定義と参照の仕方を忘れてしまうのでメモしておく

0 件のコメント:

コメントを投稿