不拿起我的問題的要點所在位置:廚師獨奏nginx的配方在我的屬性
https://gist.github.com/tsabat/a8f27ae6ac7d1fd3b6f7
高層次的問題是,廚師獨奏似乎沒有拿起屬性我在我的attriutes/default.rb
文件中設置了一個配方。
我最近從10號轉向11號廚師,我認爲一些突破性的變化讓我有一個桶。
請幫忙。
不拿起我的問題的要點所在位置:廚師獨奏nginx的配方在我的屬性
https://gist.github.com/tsabat/a8f27ae6ac7d1fd3b6f7
高層次的問題是,廚師獨奏似乎沒有拿起屬性我在我的attriutes/default.rb
文件中設置了一個配方。
我最近從10號轉向11號廚師,我認爲一些突破性的變化讓我有一個桶。
請幫忙。
所以,我沒有回答爲什麼廚師在食譜中對待變量的原因,但這裏是我的修復。
從食譜中挑選屬性的方式發生了一些變化,讓我很煩惱。因爲我使用Chef Solo,並且不支持角色,所以我創建了一個角色,覆蓋了其中的屬性,然後調用了我的基本食譜。
這個模型與我在服務器上工作時概念化廚師的方式密切相關,所以對我來說這是一個有效的解決方案。我做了以下內容:
創建一個名爲基地
name "base"
description "The base role"
run_list "recipe[base]"
override_attributes "nginx" =>
{
'install_method' => 'source',
'source' => {'version' => '1.5.3'}
}
角色通過Vagrantfile
config.vm.provision "chef_solo" do |chef|
chef.cookbooks_path = "vendor/cookbooks"
chef.roles_path = "roles"
chef.data_bags_path = "data_bags"
chef.add_role "base"
end
添加角色到運行列表你需要重寫額外的變量:prefix
,url
,sbin_path
和default_configure_flags
:
set['nginx']['version'] = "1.5.3"
set['nginx']['source']['version'] = "1.5.3"
# The Chef checksum of a binary is determined by: shasum -a 256 FILE_NAME
set['nginx']['source']['checksum'] = "edcdf2030750b4eb1ba8cd79365c16a3e33e6136b7fdd8a1a7b4082397f4e92b"
set['nginx']['source']['prefix'] = "/opt/nginx-#{node['nginx']['source']['version']}"
set['nginx']['source']['url'] = "http://nginx.org/download/nginx-#{node['nginx']['source']['version']}.tar.gz"
set['nginx']['source']['sbin_path'] = "#{node['nginx']['source']['prefix']}/sbin/nginx"
set['nginx']['source']['default_configure_flags'] = [
"--prefix=#{node['nginx']['source']['prefix']}",
"--conf-path=#{node['nginx']['dir']}/nginx.conf",
"--sbin-path=#{node['nginx']['source']['sbin_path']}"
]
這是因爲這些變量嵌入了其他變量,並且它們使用值尚未被覆蓋的值進行設置。
通過在包裝食譜中指定這些附加變量,確保它們正在使用所期望的所有更新值。
而且,因爲default
值在nginx的食譜已經設置,最好使用像set
(爲normal
的別名)爲更加準確地描述你在做什麼,並具有較高的attribute precedence。
當然,我可以做到這一點。但是,似乎過度。我想知道爲什麼派生的變量無法識別我重寫了它們派生自的變量。 – timsabat
看看[這裏](http://stackoverflow.com/questions/17679898/how-to-update-nginx-via-chef/17710858?noredirect=1#comment25813333_17710858)。你的問題似乎與那個有關。 – cassianoleal
你是對的,它與此有關。我真的通過不依賴食譜中的屬性來解決這個問題,相反,我忽略了角色中的屬性。 – timsabat
Oi。我一直在使用廚師獨奏進入這個相同的問題。感謝您提出這個問題。 –