我的问题的要点在这里:
https://gist.github.com/tsabat/a8f27ae6ac7d1fd3b6f7
高层次的问题是,chef-solo 似乎没有接受我在 attriutes/default.rb
文件中为食谱设置的属性。
我最近从 10 转为厨师 11,我认为一些重大变化让我不知所措。
请帮忙。
最佳答案
您需要覆盖其他变量: 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 。关于chef-infra - 厨师独奏 nginx 食谱不符合我的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17982574/