2

我一直在考虑这个问题并搜索了很长时间而没有找到任何东西,所以我假设我遇到了 XY 问题。

让我描述一下我的问题,这听起来很常见。

我们capistrano用来部署我们的网络应用程序和数据库。相关部分是我们有一个用于延迟作业的专用服务器,我们使用capistrano它来部署它并启动/重新启动进程。这是具有 2 个不同Gemfile的 s 和 3 个队列的自定义工人数量。

我想要做的是在服务器重新启动时启动它们,或者更重要的是,在服务器克隆 + 启动时启动它们。

我试过从服务器本身调用cap production delayed_job:custom_start..没有用。(这是我的非 XY 问题调整问题的核心)。不确定它是否有意义。但我想知道这是否可能。custom_start是启动我们的一组工作人员的任务。

或者,我正在考虑将代码抽象为rake任务或脚本或其他东西,并从两者capistrano以及我需要添加它以在启动时开始的地方调用它。这更有意义吗?

编辑:刚刚发现这篇文章..令人沮丧..

ps 我只是想澄清一下,当我说服务器时,我的意思是我的机器/ec2 实例,而不是我的网络应用程序重新启动。

4

2 回答 2

0

我最终将延迟的作业相关逻辑移动到它自己的接受启动/停止的脚本中,并从 capistrano 委托给这个脚本。这意味着我可以将此脚本添加到我的 rc.local。

于 2013-10-10T00:46:29.167 回答
0

我的 Jenkins 部署作业充斥着开发人员可以调用的直接任务,例如 cap dev app:fetch_logs、cap qa sanitize_environment 等。

Capistrano 的此功能很容易且经过验证。

我猜你想要做的是使用 Capistrano 来设置 rc.d 文件。是的,你可以这样做。此时您应该使用厨师/木偶吗?考虑。Scalr/Rightscale 也很有趣。

您可以将 bash 脚本添加为所有工作变量的 .erb 模板,然后将脚本上传到 deploy_to 目录。最后,您可以设置另一个任务 (#{sudo}) 将 rc.d 包装器注入 rc.d。或者你而不是你的 bash 脚本的 rc.d 包装器,只需从 rc.d-local 调用 bash 脚本。您可以使用 sed 附加到 rc.d-local。

于 2013-10-08T13:48:46.433 回答