defaults = { 'apt': { 'unattended_upgrades': { 'day': 5, 'hour': 21, }, }, } @metadata_reactor.provides( 'cron/upgrade-and-reboot' ) def patchday(metadata): day = metadata.get('apt/unattended_upgrades/day') hour = metadata.get('apt/unattended_upgrades/hour') return { 'cron': { 'upgrade-and-reboot': '{minute} {hour} * * {day} root /usr/local/sbin/upgrade-and-reboot'.format( minute=node.magic_number % 30, hour=hour, day=day, ), }, }