From 63cdd470cf8db3af357d83948d37b44fb255ff00 Mon Sep 17 00:00:00 2001 From: Franziska Kunsmann Date: Tue, 19 Jan 2021 13:34:23 +0100 Subject: [PATCH] bundles/c3voc-addons: support cron definition --- bundles/c3voc-addons/files/cron_template | 1 + bundles/c3voc-addons/items.py | 15 +++++++++------ bundles/c3voc-addons/metadata.py | 16 ++++++++++++++++ 3 files changed, 26 insertions(+), 6 deletions(-) create mode 120000 bundles/c3voc-addons/files/cron_template diff --git a/bundles/c3voc-addons/files/cron_template b/bundles/c3voc-addons/files/cron_template new file mode 120000 index 0000000..3bd1091 --- /dev/null +++ b/bundles/c3voc-addons/files/cron_template @@ -0,0 +1 @@ +../../cron/files/cron_template \ No newline at end of file diff --git a/bundles/c3voc-addons/items.py b/bundles/c3voc-addons/items.py index b62795c..a633016 100644 --- a/bundles/c3voc-addons/items.py +++ b/bundles/c3voc-addons/items.py @@ -62,14 +62,17 @@ files = { 'data': node.metadata.get('apt', {}).get('unattended-upgrades', {}), } }, - '/etc/cron.d/upgrade-and-reboot': { - 'content': '{minute} 1 * * {day} root /usr/local/sbin/upgrade-and-reboot'.format( - minute=node.magic_number % 30, - day=node.metadata.get('apt', {}).get('unattended-upgrades', {}).get('day', 5), - ), - }, } +for crontab, content in node.metadata.get('cron', {}).items(): + files['/etc/cron.d/{}'.format(crontab)] = { + 'source': 'cron_template', + 'content_type': 'mako', + 'context': { + 'cron': content, + } + } + for vhost, config in node.metadata.get('nginx', {}).get('vhosts', {}).items(): if not 'domain' in config: config['domain'] = vhost diff --git a/bundles/c3voc-addons/metadata.py b/bundles/c3voc-addons/metadata.py index 3f4b527..8b40c70 100644 --- a/bundles/c3voc-addons/metadata.py +++ b/bundles/c3voc-addons/metadata.py @@ -18,6 +18,22 @@ defaults = { } +@metadata_reactor.provides( + 'cron/upgrade-and-reboot' +) +def patchday(metadata): + day = metadata.get('apt/unattended_upgrades/day', 5) + + return { + 'cron': { + 'upgrade-and-reboot': '{minute} 1 * * {day} root /usr/local/sbin/upgrade-and-reboot'.format( + minute=node.magic_number % 30, + day=day, + ), + }, + } + + @metadata_reactor.provides( 'icinga2_api/nginx/services', )