我使用opscode nginx cookbook來配置我的節點上的nginx服務器。 nginx cookbook有一些默認屬性,我想在我的角色(「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
在我的角色/ 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-客戶端的nginx配方會忽略我的覆蓋並使用默認配置。
我在這裏做錯了什麼?
謝謝!
您是否忘記將角色上傳到廚師服務器(如果您正在使用它)? –
您是否運行帶有或不帶自定義運行列表(-o)的chef-client?今天,我學習了(在調試2-3小時後),在覆蓋運行列表時,不會使用角色/節點中設置的屬性。 –
我遇到了同樣的問題:/我非常確定我在角色中設置了override_attributes,並且我只在我的屬性文件中使用了默認值。我敢打賭,這是一種廚師的錯誤或什麼。 –