我有一堆项目,我用 git 和 fab 推送到服务器。它们是 Django 站点的负载。其中一些站点有 cron 作业。
我希望处于这样的境地:
通过在本地编辑文件并运行 fab 命令(例如fab save deploy
正如我目前所做的那样)
(仅)远程安装新作业并替换任何旧作业(我不想每次都克隆作业)
保持相同的高度可定制的时间设置。并非我所有的问题都可以通过@hourly 解决。
解决这个问题的最佳方法是什么?
我知道如何将 cron 作业部署到生产环境中? https://stackoverflow.com/questions/1603034/how-do-you-deploy-cron-jobs-to-production但重点似乎是将 cronning 侵入到结构脚本中,并且(至少在答案中)没有考虑到可能有多个项目需要每个用户的 cron 作业。
我正在寻找存储在 VCS 中的东西(我不会将我的 fabfile 推送到 git - 它在我的所有项目之间共享),这些东西将与 crontab 中的其他作业一起工作。如果每次部署时 ProjectA 和 ProjectB 都覆盖彼此的作业,那就不好了。
我不喜欢编辑 crontab 或每用户 cron 作业;任何人编辑crontab
可能会搞乱你的部署。相反,我创建了进入的脚本/etc/cron.$interval
这允许我部署它们Puppet https://puppet.com/docs/open-source-puppet(参见计划任务类型 https://puppet.com/docs/puppet/latest/cheatsheet_core_types.html#cron)或一个简单的cp
命令。
因此,如果我需要一个每天运行一次的脚本,我要么将其放入$project/cron/cron.daily/$project
如果我在没有 Puppet 的情况下安装。
或者,如果您确实需要合并 crontab,则应该向每个脚本添加页眉和页脚,这样就可以轻松查看 crontab 的某些部分来自何处。页眉/页脚还允许您自动添加/删除每个脚本。
你永远不应该替换整个 crontab,因为有一天,有人会手动编辑它。编辑将一直有效,直到您再次部署,此时它将突然静默失败。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)