node.js - 使用 chef 在 aws 上安装 node.js 的正确方法

标签 node.js amazon-web-services ubuntu chef-infra

我做了一些研究,但找不到任何令人满意的东西。我们正在使用 Chef 11。

这就是我现在所拥有的。仅供引用:我对 Chef 很陌生。所以我有一种直觉,我做错了。

execute "Update apt-get" do
  command 'curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -'
end

package 'nodejs' do
  action :upgrade
end

它大部分时间都有效。但它有时会失败。
Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1'

This issue on ubuntu似乎是罪魁祸首。

问题是,有没有比运行这个 curl 更好的方法?更新命令apt-get所以我可以安装更高版本的node.js?

最佳答案

我使用以下说明书使用 chef 管理一些 Node.js 应用程序:application , application_git , application_javascript

配方如下:

include_recipe 'chef-vault'

# provisions system user to run application
user node['project']['application']['user'] do
  system true
  shell '/bin/false'
  manage_home true
end

application node['project']['application']['deploy_path'] do
  # Provision specific Node.js version
  javascript '4.2.4'

  owner node['project']['application']['user']
  group node['project']['application']['user']

  # Download application source from git private repository
  git node['project']['application']['repository'] do
    deploy_key chef_vault_item('project', 'deploy_key')['file-content']
  end

  # install dependencies
  npm_install do
    production false
    user node['project']['application']['user']
    group node['project']['application']['user']
  end

  # Provision service
  javascript_service 'server.js'
end
project在我的 Recipe 中是已部署的特定项目的名称。

这个 Recipe 有一些优点:
  • 它在特定用户帐户下运行您的项目
  • 允许指定特定的 Node.js 版本(在示例中是 4.2.4 Node.js 版本)。
  • 该说明书允许多种安装方法( native 包、二进制文件、源代码)。从而使其可跨不同的操作系统移植。
  • 处理项目依赖的安装
  • 以特定于操作系统的方式提供服务注册(某些操作系统上的经典 init,其他操作系统上的 Systemd 等)
  • 关于node.js - 使用 chef 在 aws 上安装 node.js 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45042572/

    相关文章:

    windows - 专为 Unix 设计的 Node.js 模块?

    javascript - 我应该用 Mongoose 验证获取参数吗

    javascript - 如何在 NodeJS/Express API 中进行多个异步调用

    node.js - 我如何使用 web-grpc 的证书/授权?

    database - AWS Elasticache Redis 故障转移

    python - 如何格式化 boto aws sdk 的 JSON?

    python - Dynamodb - 查询列表是否包含

    ruby-on-rails - Net::SSH::AuthenticationFailed:用户身份验证失败

    java - 在 Ubuntu 上安装 RWekajars

    php - Cronjob 不工作 Ubuntu 服务器