厨师长Nginx食谱-覆盖版本号
我已经为我的应用程序开发了一本食谱,它依赖于Nginx食谱。我已经从以下位置下载了Nginx食谱 并尝试在我的食谱中包含默认配方,并覆盖默认属性文件中指定的版本属性。但不管我做什么,都安装了Nginx 1.0.x版。我无法跟踪它从何处获取版本信息。有人能帮助解决这个问题吗厨师长Nginx食谱-覆盖版本号,nginx,chef-infra,cookbook,Nginx,Chef Infra,Cookbook,我已经为我的应用程序开发了一本食谱,它依赖于Nginx食谱。我已经从以下位置下载了Nginx食谱 并尝试在我的食谱中包含默认配方,并覆盖默认属性文件中指定的版本属性。但不管我做什么,都安装了Nginx 1.0.x版。我无法跟踪它从何处获取版本信息。有人能帮助解决这个问题吗 感谢attributes/default.rb中的默认版本设置为“1.4.4” 要了解您将其设置为哪个版本,最简单的方法是在chef server UI上查找以下属性: ['nginx']['version'] 希望这应该设
感谢attributes/default.rb中的默认版本设置为“1.4.4” 要了解您将其设置为哪个版本,最简单的方法是在chef server UI上查找以下属性: ['nginx']['version']
希望这应该设置为您设置的任何值 从attributes/default.rb默认版本设置为“1.4.4” 要了解您将其设置为哪个版本,最简单的方法是在chef server UI上查找以下属性: ['nginx']['version']
希望这应该设置为您设置的任何值 如果在自己的包装器cookbook中指定
nginx
cookbook作为依赖项,则必须处理属性文件的严格加载顺序。自Chef 11以来,所有依赖项烹饪书都首先加载,然后加载需要它们的烹饪书。在加载依赖项手册(包括nginx
)时,将按以下顺序加载和评估属性文件:
nginx的
attributes/default.rb
- 按字母顺序排列的
nginx的所有其他属性文件
- 烹饪书的
属性/default.rb
- 按字母顺序排列食谱的所有其他属性文件
node['nginx']['source']['version']
使用node['nginx']['version']
初始化,因此使用默认值。如果您只是在烹饪书的后面更改节点['nginx']['version']
,则此值不会更改
但不用担心,有一个补救办法:)您可以重新加载特定的属性文件,以便重新设置它们的属性。在这里,如果您想覆盖nginx版本,这是相当方便的。这是我在nginx包装器手册的attributes/default.rb
中所做的:
override['nginx']['version'] = '1.6.0'
override['nginx']['source']['checksum'] = '943ad757a1c3e8b3df2d5c4ddacc508861922e36fa10ea6f8e3a348fc9abfc1a'
# Reload nginx::source attributes with our updated version
node.from_file(run_context.resolve_attribute('nginx', 'source'))
如果将
nginx
cookbook指定为自己的包装器cookbook中的依赖项,则必须处理属性文件的严格加载顺序。自Chef 11以来,所有依赖项烹饪书都首先加载,然后加载需要它们的烹饪书。在加载依赖项手册(包括nginx
)时,将按以下顺序加载和评估属性文件:
nginx的
attributes/default.rb
- 按字母顺序排列的
nginx的所有其他属性文件
- 烹饪书的
属性/default.rb
- 按字母顺序排列食谱的所有其他属性文件
node['nginx']['source']['version']
使用node['nginx']['version']
初始化,因此使用默认值。如果您只是在烹饪书的后面更改节点['nginx']['version']
,则此值不会更改
但不用担心,有一个补救办法:)您可以重新加载特定的属性文件,以便重新设置它们的属性。在这里,如果您想覆盖nginx版本,这是相当方便的。这是我在nginx包装器手册的attributes/default.rb
中所做的:
override['nginx']['version'] = '1.6.0'
override['nginx']['source']['checksum'] = '943ad757a1c3e8b3df2d5c4ddacc508861922e36fa10ea6f8e3a348fc9abfc1a'
# Reload nginx::source attributes with our updated version
node.from_file(run_context.resolve_attribute('nginx', 'source'))
我认为这里真正的问题是
['nginx']['version']
的行为不符合您的预期
根据自述文件
- 如果您使用
或nginx::default
配方,您将从平台的存储库或nginx维护人员提供的“稳定”repo加载最新的二进制软件包。nginx::repo
属性实际上被忽略了version
- 只有使用
配方,才能使用nginx::source
属性,该配方确定获取和构建的源存档的URLversion
- 如果使用
配方,它会根据当前安装的nginx版本更新nginx::ohai
属性version
提供了(通常)旧版本的nginxnginx::default
为您提供了(通常)更稳定的nginx版本nginx::repo
是唯一允许您指定所需nginx版本的方法nginx::source
如果这似乎不能解释你所看到的。。。您需要深入了解配方源代码。配方行为(例如,安装存储库的选择)因不同的平台/系列而异。我认为这里的真正问题在于
['nginx']['version']
的行为与您可能期望的不一样
根据自述文件
- 如果您使用
或nginx::default
配方,您将从平台的存储库或nginx维护人员提供的“稳定”repo加载最新的二进制软件包。<nginx::repo