cron

There are more options how to configure cron:

  1. Use Ansible role vbotka.rcb

Default value is rcb_rsnapshot_cron=false. This means crontab will not be configured by default. Set rcb_rsnapshot_cron=true and configure crontab. For example,

rcb_rsnapshot_cron: true
rcb_rsnapshot_cron_user: root
rcb_rsnapshot_cron_path: "{{ rcb_bin_dir }}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
rcb_rsnapshot_cron_mailto: root
rcb_rsnapshot_cron_hourly_hour: '*/4'
rcb_rsnapshot_cron_hourly_minute: '15'
rcb_rsnapshot_cron_hourly_command: 'rcb-rsnapshot.sh -i=hourly'
rcb_rsnapshot_cron_daily_hour: '5'
rcb_rsnapshot_cron_daily_minute: '15'
rcb_rsnapshot_cron_daily_command: 'rcb-daily-rsync.sh'
rcb_rsnapshot_cron_weekly_hour: '1'
rcb_rsnapshot_cron_weekly_minute: '15'
rcb_rsnapshot_cron_weekly_day: '1'
rcb_rsnapshot_cron_weekly_command: 'rcb-rsnapshot.sh -i=weekly'
rcb_rsnapshot_cron_monthly_hour: '2'
rcb_rsnapshot_cron_monthly_minute: '15'
rcb_rsnapshot_cron_monthly_day: '1'
rcb_rsnapshot_cron_monthly_command: 'rcb-rsnapshot.sh -i=monthly'

Configure cron

shell> ansible-playbook -t rcb_cron rcb.yml

Creates the crontab

shell> crontab -l
PATH=/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
MAILTO=root
#Ansible: hourly rcb_rsnapshot
15 */4 * * * rcb-rsnapshot.sh -i=hourly
#Ansible: daily rcb_rsnapshot
15 5 * * * rcb-daily-rsync.sh
#Ansible: weekly rcb_rsnapshot
15 1 * * 1 rcb-rsnapshot.sh -i=weekly
#Ansible: monthly rcb_rsnapshot
15 2 1 * * rcb-rsnapshot.sh -i=monthly

See also

The defaults of the Ansible role vbotka.rcb defaults/main.yml

  1. Use Ansible role vbotka.linux_postinstall

If the system is Linux the systemic way is to keep rcb_rsnapshot_cron=false and configure all crontab entries of the system with Ansible role vbotka.linux_postinstall. To use this role, install it

shell> ansible-galaxy install vbotka.linux_postinstall

and configure the variables lp_cron_var and lp_cron_tab

lp_cron_var:
  - {user: root, name: MAILTO, value: root}

lp_cron_tab:
  - {state: present,
     user: root,
     name: hourly rcb_rsnapshot,
     minute: '15', hour: '*/4', day: '*', month: '*', weekday: '*',
     command: 'rcb-rsnapshot.sh -i=hourly'}
  - {state: present,
     user: root,
     name: daily rcb_rsnapshot,
     minute: '15', hour: '5', day: '*', month: '*', weekday: '*',
     command: 'rcb-daily-rsync.sh'}
  - {state: present,
     user: root,
     name: weekly rcb_rsnapshot,
     minute: '15', hour: '1', day: '*', month: '*', weekday: '1',
     command: 'rcb-rsnapshot.sh -i=weekly'}
  - {state: present,
     user: root,
     name: monthly rcb_rsnapshot,
     minute: '15', hour: '2', day: '1', month: '*', weekday: '*',
     command: 'rcb-rsnapshot.sh -i=monthly'}

The below playbook will create the same crontab

shell> ansible-playbook -t lp_cron linux-postinstall.yml

See also

The documentation at readthedocs.io Ansible role Linux postinstall

  1. Manual configuration of cron

For manual configuration of cron RCB project provides crontab example .