Ansible Cron 特殊时间 "You must specify time and date fields or special time." 错误

Ansible Cron special time "You must specify time and date fields or special time." error

我正在尝试将 cron 作业添加到 ansible playbook。这项工作需要很长时间,我需要在服务器正常关闭期间 运行 它。脚本如下:

- name: Set scheduled run
  cron:
    name: "cron run"
    special_time: reboot
    minute: "0"
    hour: "20"
    user: root
    job: "/path/to/script"

没有 special_time: reboot 也能正常工作,但添加后出现以下错误:

"You must specify time and date fields or special time."

为了实现您的目标,您需要两个 cron 作业:

  1. 第一个将在给定时间重新启动服务器
  2. 第二个将在重启时执行 — 使用 crontab@reboot 机制

请注意,这样做的副作用是您的脚本将在该节点的每次重新启动时执行,可能是在夜间、第一个 cron 重新启动节点时,或者每当节点重新启动时。

这将给这个剧本:

- name: Scheduled reboot
  cron:
    name: "Reboot to launch /path/to/script"
    minute: "0"
    hour: "20"
    user: root
    job: "/sbin/reboot"

- name: Launch script after reboot
  cron:
    name: "Launch /path/to/script after reboot"
    special_time: reboot
    user: root
    job: "/path/to/script"

不过,要确保脚本不会在一天中间执行,您可以做的是验证脚本开始时的小时,例如:

#!/usr/bin/env sh

if [ "$(date +%H)" -lt 20 ]; then
    exit 0
fi