我有一个nodejs express应用程序,它使用了一些ES6特性,所以它需要nodejs高于0.12.18。但AWS Opsworks Chef 11堆栈仅提供高达0.12.18的NodeJs。
我尝试使用我自己的自定义食谱/食谱并创建了'opsworks_nodejs/attributes/customize.rb':
normal[:opsworks_nodejs][:version] = '14.2.0'
normal[:opsworks_nodejs][:prefix_url][:node] = 'https://rpm.nodesource.com/pub_14.x/el/7/x86_64/'
normal[:opsworks_nodejs][:rpm] = "nodejs-14.2.0-1nodesource.x86_64.rpm"
normal[:opsworks_nodejs][:rpm_url] = "https://rpm.nodesource.com/pub_14.x/el/7/x86_64/nodejs-14.2.0-1nodesource.x86_64.rpm"但是安装失败了,日志显示它试图下载一个不存在的文件。它会忽略我的更改(版本部分除外):
https://opsworks-instance-assets-eu-west-1.s3.amazonaws.com/packages/amazon/2018.03/opsworks-nodejs-14.2.0-1.x86_64.rpm我想知道是否有一种方法可以像使用Chef 11堆栈一样使用它,并且只将nodejs版本更改为14.2.0,因为我已经习惯了那里使用的所有其他食谱,特别是部署机制。我想要区别的只是node.js版本。
如果没有,我假设我必须使用一个没有预先设置这些食谱的Chef 12堆栈,这是正确的吗?安装NodeJS14.2.0并仍然能够使用Chef 11堆栈提供的方便的"Deploy"-feature的最简单方法是什么?
发布于 2020-11-14 01:00:09
FWIW,添加这个作为答案。有一个recommendation可以使用“至少”v14.10.9。
在与AWS OpsWorks
Chef Automate服务器关联的节点上,支持的最低chef-client版本为13.x。我们建议至少运行14.10.9或最新的、稳定的chef-client版本。
如果您可以使用Chef client v14+,那么您应该能够使用Chef超市中的nodejs食谱。使用伯克架(Berksfile),我们应该能够将其作为依赖项拉取。
source 'https://supermarket.chef.io'
cookbook 'nodejs'序列通常是:
在metadata.rb中为社区食谱添加依赖项
name 'my_cookbook'
version '0.1.0'
depends 'nodejs', '~> 7.3.0'在attributes/default.rb中更新/设置所需的属性,或者可以是customize.rb
default['nodejs']['install_method'] = 'binary'
default['nodejs']['version'] = '14.2.0'
default['nodejs']['binary']['checksum'] = '3307d8b95014e78b43f85242a03fe3b28edfb90cc15e1d26393dcbbc51d05c8e'然后在recipes/default.rb中
include_recipe 'nodejs'https://stackoverflow.com/questions/64815527
复制相似问题