Previously I discusses how use CFEngine as a cron replacment. I'd like to revisit that using EFL and Delta Reporting.
Recall that you can use time classes to represent cron time syntax.
Sundays at 0700 hours.
0 7 * * 0
EFL has several class bundles that can make class definitions easy. Try defining your holidays in cron without using a script. With the bundle efl_class_expression it is easy.
# class ;; expression ;; promisee is_holiday ;; (January.Day1)|(December.Day25)|Sunday|Saturday ;; Holidays with no work. backups ;; Hr01.(Monday|Wednesday|Friday) ;; Backup schedule.
Using the efl_commands bundle we can promise commands just as we would in cron.
# class ;; command ;; shell ;; module ;; ifelapsed ;; promisee !is_holiday ;; /usr/bin/db_dump.sh ;; noshell ;; no ;; 1440 ;; Daily backup ettin ;; /usr/bin/fetchmail ;; noshell ;; no ;; 5 ;; email backups ;; /usr/bin/backup.sh ;; noshell ;; no ;; 60 ;; Backups
Using Delta Reporting we can audit the history of our jobs, reporting last status and status of the past.