我知道在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版本?谢谢。
答案 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