【发布时间】:2020-10-12 11:31:16
【问题描述】:
我有一个更新 LetsEncrypt 证书的 Ansible 任务。我只希望这个任务每周运行一次,以避免因敲击 API 而被阻止,但剧本的其余部分需要每天运行 - 并且将比开发期间运行更多方式 .
是否可以对 Ansible 任务进行速率限制,以便如果它在过去 n 小时内已经运行,则将被跳过?
我能想到的最好方法是在任务运行时触摸文件,如果文件存在并且比某个时间戳更新,则跳过任务——但 Ansible 在日期和时间上似乎并不大计算。这也让剧本变得很厚实。
我确实想过在任务中应用一个标签,并在ansible.cfg 中将标签标记为默认跳过,然后每周只启用一次该标签,但ansible.cfg 似乎覆盖了--tags 而不是其他方式。
【问题讨论】:
-
这能回答你的问题吗? Run CRON job everyday at specific time
-
问题不是从 cron 运行,而是让 Ansible 记录任务上次运行的时间并在最近运行时跳过它。在这种情况下,该作业每天运行,但如果它在不到 7 天前运行,则应跳过证书更新。
标签: ansible