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