25

ノードでnginxサーバーを構成するためにopscode nginxクックブックを使用しています。nginx クックブックには、自分の役割 (「web_server」) でオーバーライドしたいデフォルトの属性がいくつかあります。

オーバーライドしたい属性は次のとおりです。

default['nginx']['version'] = "1.2.2" # in cookbooks/nginx/attributes/default.rb
default['nginx']['source']['prefix'] = "/opt/nginx-#{node['nginx']['version']}" # in cookbooks/nginx/attributes/source.rb

私の roles/web_server.rb ファイルには、次のようなものがあります。

name "web_server"
description "Setup a web server"
run_list "role[base]", "recipe[nginx]"
override_attributes 'nginx' => {
  'install_method' => "source",
  'version' => "1.2.3",
  'source' => { "prefix" => "/opt/nginx", "checksum" => nil }
}

ただし、chef-client を実行すると、nginx レシピは私のオーバーライドを無視し、デフォルトのものを使用します。

ここで何が間違っていますか?

ありがとう!

4

7 に答える 7

4

属性の優先順位チャート [1] は、これら 4 つのオプションがあなたの役割より上位にランク付けされていることを示しています。

12. An override attribute located in an environment
13. A force_override attribute located in a cookbook attribute file
14. A force_override attribute located in a recipe
15. An automatic attribute identified by Ohai at the start of the chef-client run

これらが原因であると思われない場合は、書式設定を変更すると役立つ可能性があります。私はそれを次のように書きます:

override_attributes(
  nginx: {
    install_method: 'source',
    version: '1.2.3',
    source: {
      prefix: '/opt/nginx',
      checksum: [ ],
    },
  }
)

[1] https://docs.chef.io/attributes.html#attribute-precedence

于 2014-02-12T18:25:41.057 に答える
1

ここで属性の優先順位を確認しましたか?https://docs.chef.io/attributes.html#attribute-precedence

レシピのノードで直接オーバーライドされた属性がないことを確認してください。

于 2012-08-27T15:18:13.503 に答える
0

括弧で試しましたか?括弧を使用して例を試したところ、デフォルトの属性がオーバーライドされました。

# your roles/web_server.rb file

override_attributes(
  'nginx' => {
    'install_method' => "source",
    'version' => "1.2.3",
    'source' => { "prefix" => "/opt/nginx", "checksum" => nil }
  }
)
于 2013-10-30T11:20:59.683 に答える