chefでは、ロールファイル内の属性にどのようにアクセスしますか?


13

文書化されているようにロールファイルに属性を設定することはできますが、使用しているクックブックによって既に設定されている属性にアクセスすることはできません。

/roles/appserver.rb内の例:

name "appserver"

run_list(%w{
  recipe[tomcat::default]
})

default_attributes(
  :tomcat => {
    :java_options => "-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=" + node[:tomcat][:log_dir]
  }
)

私が得るのは、シェフが「ノード」メソッド/変数を見つけることができないという例外です。

ありがとう

回答:


12

できません。ロールをナイフでサーバーにアップロードすると、ロールRuby DSLはRubyからJSONに変換されます。ノードオブジェクトは、Chef実行のコンテキストで処理されないため、使用できません。

代わりに、ノードの属性を組み合わせたい場合は、レシピでそれを行う必要があります。次に例を示します。

"#{node[:tomcat][:java_options]}#{node[:tomcat][:log_dir]}"

0

require_relative 'base_role_file'ロール内で実際に使用できます。この必要なファイルは、使用するグローバル変数を設定する場合があります。かなりハッキー。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.