Chef-soloでattributesのundefined method `[]’ for nil:NilClassエラー

クックブックAとBがあり、Aのレシピ内でBのデフォルトレシピを実行してほしいのでをinclude_recipeで読み込む

“A/recipes/default.rb”

include_recipe "B"

クックブックBのattributesにはdefault.rbがあり

“B/attributes/default.rb”

default['B']['attr_key'] = 'attr_value'

が定義されており、レシピには

“B/recipes/default.rb”

#{node['B']['attr_key']}

として値を使っている。

この状態でクックブックAを実行すると、

#{node['B']['attr_key']}

のところで

NoMethodError                             
-------------                             
undefined method `[]' for nil:NilClass

というエラーになる。

解決するためには、クックブックAのmetadata.rb

“A/metadata.rb”

depends "B"

と書いて依存関係を明確にすることで、実行時にBのattributesが読み込まれるようになる。

[#CHEF-3893] does “depend” is required in metadata.rb if you include_recipe – Opscode Open Source Ticket Tracking

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中