【发布时间】:2012-09-12 15:37:35
【问题描述】:
我有一堆项目,我用 git 和 fab 推送到服务器。它们是大量的 Django 站点。其中一些网站有 cron 作业。
我想处于我可以的情况:
通过在本地编辑文件并运行 fab 命令来管理站点的 cron 作业(例如
fab save deploy,就像我目前所做的那样)远程安装新作业(仅)并替换任何旧作业(我不想每次都克隆作业)
保持相同的高度可定制的时间设置。 @hourly 并不是我所有的问题都能解决。
解决这个问题的最佳方法是什么?
我知道How do you deploy cron jobs to production?,但那里的重点似乎是关于将 cronning 入侵到结构脚本中,并且(至少在答案中)没有考虑到每个用户可能有多个项目需要 cron 作业.
我正在寻找存储在 VCS 中的东西(我不会将我的 fabfile 推送到 git - 它在我的所有项目之间共享),它将与 crontab 中的其他作业一起工作。如果 ProjectA 和 ProjectB 每次部署时都覆盖彼此的作业,那就不好了。
【问题讨论】:
-
我不确定这是否有帮助,但是您是否使用 puppet,并以独立模式在本地运行 puppet?您可以拥有一个包含 cron 作业的所有配置的 puppet 模块,并且 puppet 将负责从 cron 中插入、更新或删除它们。显然,puppet 模块将与其余代码一起在您的 git 存储库中。
-
@Augusto 这种方法的问题类似于仅使用织物。我可以让 fabric 打开一个 cron 文件(存储在 git 中)并将其内容泵出到远程 crontab 但是我该怎么做该过程与多个项目兼容?我不能只是继续追加到 crontab,否则我将拥有一百万个重复作业。
-
奥利,我不知道面料。 Puppet 不会插入重复的 crontab,因为它为每个条目提供了一个 id(其格式为条目上方的注释)。因此,只要有人不进入框并删除该评论,puppet 就不会插入副本,甚至可以在不再需要它们时将其删除。我刚刚意识到 puppet 不能满足你的第一点,但也许你可以写一些与 puppet 做同样事情的东西,但是远程。
-
这里有一个脚本可以将您现有的 crons 转换为 puppet 标记:shtuff.it/article/28/…
标签: git version-control cron fabric