2014-09-04 100 views
3

我刚开始使用的厨师,并希望我的节点上安装Hadoop的属性。到目前为止,我有这个非常简单的配方,它不工作。覆盖与包装食谱

my-hadoop/attributes/default.rb: 

    default['hadoop']['core_site']['fs.defaultFS'] = "Test" 


my-hadoop/recipes/default.rb: 

    include_recipe "hadoop" 

hadoop_cookbook/attributes/default.rb: 

    default['hadoop']['core_site']['fs.defaultFS'] = "hdfs://#{node['fqdn']}" 

这是我在阅读博客文章后对包装食谱的理解。它正在安装Hadoop,但每次都使用默认值。将默认值更改为任何其他优先级(如“覆盖”)不能解决问题。

编辑:节点的运行列表是唯一的 '配方[从属]':

slave/recipes/default: 

    include_recipe "my-hadoop" 
+0

什么是您的节点运行列表?我的例子中没有看到任何错误,所以也许runlist是有问题的。你应该在my-hadoop metadata.rb中有一个依赖hadoop_cookbook,并且在runlist中没有hadoop_cookbook。 – Tensibai 2014-09-04 16:05:22

+0

@Tensibai:我添加的一些信息的问题 – FAS 2014-09-05 07:54:49

+0

对不起,再多要求什么,但是当你运行厨师就说明你在启动时加载的食谱,为优先工作,你应该看到hadopp_cookbook然后我-haddop和那么奴隶,是这样吗?看看hadoop_cokboko是如何完成的,不要告诉你为什么你没有得到想要的行为。 – Tensibai 2014-09-05 08:36:19

回答

0

Chef 11 requires dependencies to be set in your metadata.rb fileinclude_recipe真的只包含配方文件,所以厨师运行需要一些提示,以便加载所需的食谱书。

您的slave食谱将取决于my-hadoop。然后my-hadoop将取决于hadoop_cookbook

文件 slave/metadata.rb
depends "my-hadoop", "~> 1.5" 
文件 my-hadoop/metadata.rb
depends "hadoop_cookbook", "~> 1.3" 

如果设置了在slave食谱的默认属性,我相信它会只是工作。

+0

我的依赖文件被搞砸了,谢谢你的提示 – FAS 2014-09-08 08:58:26