OpsWorks Chef:由于旧的Ruby(1.8.7)无法编译yum cookbook

时间:2013-11-11 08:55:17

标签: ruby syntax chef yum aws-opsworks

我知道在OpsWorks中,可以使用this topic中的自定义Chef JSON更改Ruby版本。

但问题是,在安装新的Ruby之前,默认的(1.8.7)用于编译cookbook。 Ruby版本1.8.7无法理解这种代码样式(see here):

name: 'value',

我认为它只接受这种风格:

:name => "value",

有任何解决此问题的建议吗?

谢谢。

更新#1:

这是一个临时的解决方法:我检查了an older version of the yum cookbook,其代码对旧Ruby仍然有效。

更新#2:

如果我可以使用Chef-embedded Ruby,那么问题就会解决。谁能展示如何使用嵌入式Ruby版本?谢谢。

3 个答案:

答案 0 :(得分:1)

我认为上面的ruby版本sethvargo引用不是AWS用于Chef运行的版本。这是将用于Rails层的ruby版本。根据这个问题https://github.com/aws/opsworks-cookbooks/issues/50 AWS显然在Ruby 1.8.7上运行Chef11

答案 1 :(得分:0)

根据Amazon OpsWorks documentation,您可以指定版本,OpsWorks将使用:

node.set['ruby']['full_version'] = '1.9.3'

答案 2 :(得分:0)

OpsWorks现在支持Chef 11.10,Ruby 2.0,berkshelf,数据包和搜索 - 这应该可以解决您的问题 http://aws.typepad.com/aws/2014/03/aws-opsworks-now-supports-chef-1110.html