Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
厨师长Nginx食谱-覆盖版本号_Nginx_Chef Infra_Cookbook - Fatal编程技术网

厨师长Nginx食谱-覆盖版本号

厨师长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'] 希望这应该设

我已经为我的应用程序开发了一本食谱,它依赖于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']


希望这应该设置为您设置的任何值

如果在自己的包装器cookbook中指定
nginx
cookbook作为依赖项,则必须处理属性文件的严格加载顺序。自Chef 11以来,所有依赖项烹饪书都首先加载,然后加载需要它们的烹饪书。在加载依赖项手册(包括
nginx
)时,将按以下顺序加载和评估属性文件:

  • nginx的
    attributes/default.rb
  • 按字母顺序排列的
    nginx的所有其他属性文件
  • 烹饪书的
    属性/default.rb
  • 按字母顺序排列食谱的所有其他属性文件
如您所见,nginx食谱的所有属性都是在加载自己的属性文件之前初始化的。因此,任何依赖属性(即使用其他现有属性的值初始化的属性)都使用nginx cookbook中定义的值,而不是您自己的值

现在,如您所见,
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
  • 按字母顺序排列食谱的所有其他属性文件
如您所见,nginx食谱的所有属性都是在加载自己的属性文件之前初始化的。因此,任何依赖属性(即使用其他现有属性的值初始化的属性)都使用nginx cookbook中定义的值,而不是您自己的值

现在,如您所见,
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
    配方,才能使用
    version
    属性,该配方确定获取和构建的源存档的URL

  • 如果使用
    nginx::ohai
    配方,它会根据当前安装的nginx版本更新
    version
    属性

清楚了吗?如果没有,则:

  • nginx::default
    提供了(通常)旧版本的nginx
  • nginx::repo
    为您提供了(通常)更稳定的nginx版本
  • nginx::source
    是唯一允许您指定所需nginx版本的方法

如果这似乎不能解释你所看到的。。。您需要深入了解配方源代码。配方行为(例如,安装存储库的选择)因不同的平台/系列而异。

我认为这里的真正问题在于
['nginx']['version']
的行为与您可能期望的不一样

根据自述文件

  • 如果您使用
    nginx::default
    nginx::repo
    配方,您将从平台的存储库或nginx维护人员提供的“稳定”repo加载最新的二进制软件包。<