【问题标题】:How do I run additional scripts using the Rubber gem?如何使用 Rubber gem 运行其他脚本?
【发布时间】:2012-03-02 14:02:59
【问题描述】:

我正在使用 Rubber gem 部署在 Amazon ec2 上。 它很好地部署和配置了 ubuntu 实例,但我需要在服务器上安装其他模块(不是 ruby​​ 模块)。如何在部署期间使用橡胶运行其他脚本?
代码示例将不胜感激,因为这是我第一次做这种事情。

【问题讨论】:

    标签: ruby-on-rails deployment ubuntu capistrano


    【解决方案1】:

    我想在我的所有 EC2 实例上安装 NewRelic 服务器监视器时遇到了类似的问题。我最终创建了一个新角色('newrelic')并将其添加到我的所有服务器中。

    制作自定义角色很简单:

    1. 创建config/rubber/deploy-[rolename].rb(通过复制现有的)
      • 更改任务命名空间
      • 根据您的模块的需要更改 :install:bootstrap:start/:stop/:restart 任务
    2. 创建一个config/rubber/rubber-[rolename].rb
      • 在部署文件中添加您需要引用的任何变量
    3. 如有必要,创建config/rubber/role/[rolename] 目录并添加任何需要的文件(例如[rolename]-upstart.conf
    4. 通过运行cap rubber:add_role 将角色添加到您的服务器

    最简单的方法是从复制现有角色开始,然后对其进行调整以做你想做的事。

    对于自定义角色是否是执行此操作的正确方法,尚无定论。这对 newrelic 来说是有意义的,因为它安装了一个需要被监控的守护进程,但对于大多数自定义配置来说,它感觉非常重量级。

    【讨论】:

    • 我只想运行一个简单的脚本。我在 deploy-setup.rb 中放置了一些脚本,但它们都在代码上传之前的 Rubber:install_packages 之后运行。我需要在一切完成后运行脚本,所以我想我只需要知道正在运行的最后一个任务然后指定它,但我不知道它是什么
    • 弄清楚了你需要做的就是声明一个任务,然后使用之前/之后机制将它放置在 deploy:update_code 之后,但是我确实在另一个地方也使用了你的建议,所以谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多