2013-09-16 71 views
1

我正在尝试安装其他厨师食谱将识别为系统红宝石的红宝石的全球版本。我试图用chef-rbenv这样做,这似乎在用户级别上工作,但当厨师跑ohai时不起作用。当厨师运行ohai时,我说它不工作,因为烹饪书passenger_apache2参考node['languages']['ruby']['ruby_bin']指向“/ usr/bin/ruby​​”。但是,当我运行ohai以用户身份登录时,我得到了rbenv填充位置。我是否在我的rbenv配置中缺少某些内容来查看此行为?厨师ohai没有找到我的rbenv红宝石

附加信息:

网站 - 亚马逊(AMI-05355a6c)

run_list:

配方[ruby_build]
配方[ohai]
配方[rbenv ::系统]
配方[建立必要的]
配方[apache2的]
配方[passenger_apac HE2]
食谱[passenger_apache2 :: mod_rails]

--update

我从来没有厨师的客户端ohai拿起我rbenv设置,但这已经不再是一个问题,因为我结束了覆盖角色中的节点属性。这仅仅是由于最近的改变(passenger_apache2 commit -a0a32fda0b56228d6e54163c98f6736e17cad12c)所致。

注意:综合可能也解决了我的问题。

+0

你为什么要做这个?厨师随附一份红宝石的嵌入式副本,您应该赞成,因为它可以提高可靠性。像乘客这样的软件应该倾向于系统ruby。也许你的问题应该集中在让乘客这样的系统使用rbenv,而不是食谱食谱。 –

+0

我这样做是因为我的遗留应用程序需要ree-1.8.7。让乘客使用rbenv就像编写配置文件中的路径一样简单。我更喜欢这个路径由ohai决定,就像它目前在旅客食谱中编写的那样。 (这是如果可能的话) – MikeV

回答

0

This cookbook有一个Ohai插件做到这一点。您可以:

  • 切换此食谱的食谱;
  • 已经在rbenv::ohai_plugin配方一看,重现它在你的环境中(如在包装食谱)。

第一个选项可能无法满足您的需求由于食谱的差异,而第二个可能被证明比表面上看起来更困难(我没试过...)

+0

cbl,谢谢你的回应。我已经把一个[ohai插件](https://gist.github.com/mikeverbeck/6615411)根据您链接的食谱和ohai来源。不幸的是,我仍然有问题,因为厨师外壳没有拿起全球rbenv。注意:如果我以root用户身份运行chef-client,那么所有的rbenv路径都是正确的。 – MikeV

0

你可能会覆盖在配方或节点级别

默认的属性,我认为这是语法

... 
"languages": { 
    "ruby": { 
    "ruby_bin" : "/usr/bin/ruby42"} 
}, 
... 
+0

我已经在角色和节点级尝试了这个,没有任何运气。 ' “语言”:{ “红宝石”:{ “ruby_bin”:“/usr/local/rbenv/versions/ree-1.8.7-2012。02/bin/ruby​​“ } },' 我试图避免在passenger_apache2配方中对此进行硬编码,因为我使用不同的红宝石进行部署。我开始认为我必须在配方属性中设置一些条件 – MikeV

+0

这是行不通的如果你阅读了Chef文档中的[Attributes](http://docs.opscode.com/chef_overview_attributes.html)部分,你会发现Ohai拥有最棒的所有属性的优先级,所以最终它会覆盖你尝试强制在食谱,属性,角色和环境中设置的任何内容。 – cassianoleal

+0

cbl是正确的,如果这是一个Ohai自动属性,这种方法将不起作用。在windows的世界:/ –

相关问题