Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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
Chef infra 厨师:在不同的食谱中使用属性_Chef Infra_Chef Solo - Fatal编程技术网

Chef infra 厨师:在不同的食谱中使用属性

Chef infra 厨师:在不同的食谱中使用属性,chef-infra,chef-solo,Chef Infra,Chef Solo,我试图使用一本烹饪书中定义的属性,比如foo,另一本烹饪书中定义的属性,比如bar。我得到错误“nil:NilClass的未定义方法”[]” 以上是我厨师的结构 solo.rb cookbook_path File.expand_path("../chef/cookbooks", __FILE__) json_attribs File.expand_path("../chef/roles/roles.json", __FILE__) log_location STDOUT log_level :

我试图使用一本烹饪书中定义的属性,比如foo,另一本烹饪书中定义的属性,比如bar。我得到错误“nil:NilClass的未定义方法”[]”

以上是我厨师的结构

solo.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
roles.json

{
    "run_list": ["recipe[foo::default]"]
}
foo/attributes/default.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
bar/attributes/default.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
foo/metadata.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
当我运行查询
chef solo-c solo.rb时,我得到如下错误

================================================================================
Recipe Compile Error in ../chef/cookbooks/bar/attributes/default.rb
================================================================================

NoMethodError
-------------
undefined method `[]' for nil:NilClass

Relevant File Content:
----------------------
Recipe Compile Error in ../chef/cookbooks/bar/attributes/default.rb:
1>> default['bar']['var1'] = node['foo']['var1']

这里
foo
是我的应用程序,
bar
是。如何导入属性???

您已反转了cookbook依赖项。如果您想在bar cookbook中使用
节点['foo']['var1']
属性,那么bar cookbook应该依赖于foo cookbook,而不是相反

foo/metadata.rb中去掉依赖于
的“bar”
,并创建bar/metadata.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
完整示例:

|____cookbooks
| |____foo
| | |____attributes
| | | |____default.rb
| |____bar
| | |____recipes
| | | |____default.rb
| | |____attributes
| | | |____default.rb
| | |____metadata.rb
cookbooks/foo/attributes/default.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
食谱/bar/attributes/default.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
食谱/bar/recipes/default.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
食谱/bar/metadata.rb

cookbook_path File.expand_path("../chef/cookbooks", __FILE__)
json_attribs File.expand_path("../chef/roles/roles.json", __FILE__)
log_location STDOUT
log_level :debug
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
name 'foo'
depends 'bar'
name 'bar'
depends 'foo'
default['foo']['var1'] = "Hello"
default['bar']['var1'] = node['foo']['var1']
log "The value of ['bar']['var1'] is #{node['bar']['var1']}. The value of ['foo']['var1'] is also #{node['foo']['var1']}"
name 'bar'
depends 'foo'
样本输出

# chef-client -z -o 'recipe[bar]'    
...
resolving cookbooks for run list: ["bar"]
Synchronizing Cookbooks:
  - foo (0.0.0)
  - bar (0.0.0)
Compiling Cookbooks...
Converging 1 resources
Recipe: bar::default
  * log[The value of ['bar']['var1'] is Hello. The value of ['foo']['var1'] is also Hello] action write

“Foo”是我的申请,“bar”是chef maven。我在“foo”中依赖maven(bar)。现在我尝试在关于foo的酒吧里添加依赖项,但错误仍然是一样的。你能给我们举个例子看看吗?或者是真正的烹饪书,或者只是foo和bar?增加了一个例子。老实说,我很难理解你想做什么。如果您使用的是Chef Maven cookbook,为什么要修改“Maven/attributes/default.rb”并将属性值设置为您自己的应用程序cookbook中的属性?