【问题标题】:HowTo install custom nodejs version (14.2.0) on AWS Opsworks Chef 11/12 stack如何在 AWS Opsworks Chef 11/12 堆栈上安装自定义节点 js 版本 (14.2.0)
【发布时间】:2021-02-25 03:26:36
【问题描述】:

我有一个使用一些 ES6 功能的 nodejs express 应用程序,所以它需要 nodejs 高于 0.12.18。但 AWS Opsworks Chef 11 堆栈仅提供最高 0.12.18 的 NodeJ。

我尝试使用自己的自定义食谱/食谱并创建了“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 堆栈?什么是安装 nodejs 14.2.0 并且仍然能够使用 Chef 11 堆栈提供的方便的“部署”功能的最简单方法?

【问题讨论】:

  • chef-client 的版本是多少?您是否拥有 Chef 服务器的权限?
  • 我正在使用 Amazon Web Services opsworks。我不确定在哪里看或厨师客户端版本。但我很确定它的 Chef 11.10 (docs.aws.amazon.com/opsworks/latest/userguide/…)
  • chef-client --version 应该显示版本。只是试图探索围绕 OpsWorks 系统工作的可能性。
  • 我可以 ssh 到那个实例。在'sudo su'和'sudo su deploy'之后,找不到'chef-client'命令。
  • 我记得在使用 chef-client v14.10.9 时看到了 recommendation

标签: node.js aws-opsworks cookbook


【解决方案1】:

FWIW,将此添加为答案。有一个recommendation 可以使用“至少”v14.10.9。

与 AWS OpsWorks for Chef Automate 服务器关联的节点上受支持的 chef-client 的最低版本是 13.x。我们建议至少运行 14.10.9 或最新、稳定的 chef-client 版本。

如果您可以使用 Chef 客户端 v14+,那么您应该可以使用 Chef 超市的 nodejs 食谱。使用 Berkshelf (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'

【讨论】:

  • 对我来说,AWS Opsworks 似乎只提供 Chef 11 和 12。切换到另一个 Chef 版本(如果可能的话)将需要我自己构建所有其他 coobooks 和食谱以模仿默认 Chef 11 AWS Opsworks 默认 coobooks 和食谱。对我来说不值得。似乎还有其他方法可以在 AWS 上拥有 nodejs-14.2.0 实例。无论如何感谢您的努力!
猜你喜欢
  • 2016-08-06
  • 2020-10-08
  • 1970-01-01
  • 2017-06-17
  • 2017-02-04
  • 2020-10-23
  • 2016-05-28
  • 2018-05-02
  • 2016-07-14
相关资源
最近更新 更多