使用 Jenkins 或 Gitlab CI Pipelines 之类的东西来替换 cron 作业是否被认为是不好的做法?
我能想到两个缺点,让 CI 服务器可以访问所有服务器,并且存在单点故障(如果 CI 服务器关闭,则无法运行计划任务)。
通常,在我们的示例服务器上运行的 cron 作业与 git 存储库相关联。
这是为了消除开发人员连接到服务器以检查和/或管理 cron 和 cron 故障的需要,并且能够在一个中心位置管理这些。
这会更好地放在配置管理工具(Puppet/Salt/Chef/ansible)中吗?
对解决问题的工具做出自己的设计决定。没有一个答案,只有在各种取舍之间做出选择。
没有人应该得到一个 shell,但是需要管理一些 cron 作业。因此,编写自动化程序以在每台主机上安装和验证 cron 作业。保持版本控制的自动化,并通过 CI 触发。
CI 服务器的可用性和性能可能是一个问题。通过实施高可用性和扩大规模来解决这个问题。
cron 是一个基本的调度程序,虽然它可以可靠地按分钟运行作业,但它是有限的。考虑实施具有更多功能的系统,包括日志记录和诊断。