diff --git a/Puppetfile b/Puppetfile --- a/Puppetfile +++ b/Puppetfile @@ -185,7 +185,7 @@ mod 'systemd', :git => 'https://forge.softwareheritage.org/source/puppet-camptocamp-systemd', - :ref => '2.7.0' + :ref => '2.10.0' mod 'timezone', :git => 'https://forge.softwareheritage.org/source/puppet-saz-timezone', diff --git a/site-modules/profile/manifests/swh/deploy/scheduler.pp b/site-modules/profile/manifests/swh/deploy/scheduler.pp --- a/site-modules/profile/manifests/swh/deploy/scheduler.pp +++ b/site-modules/profile/manifests/swh/deploy/scheduler.pp @@ -91,6 +91,26 @@ http_check_string => 'Software Heritage scheduler RPC server', } + # scheduler update metrics routine + + # Template uses variables + # - $user + # - $group + # - $config_file + # + $update_metrics_service_name = "swh-scheduler-update-metrics" + $update_metrics_unit_template = "profile/swh/deploy/scheduler/${update_metrics_service_name}.service.erb" + $update_metrics_timer_name = "${update_metrics_service_name}.timer" + $update_metrics_timer_template = "profile/swh/deploy/scheduler/${update_metrics_timer_name}.erb" + + ::systemd::timer { $update_metrics_timer_name: + timer_content => template($update_metrics_timer_template), + service_content => template($update_metrics_unit_template), + active => true, + enable => true, + require => Package[$packages], + } + # task archival cron $archive_config_file = lookup('swh::deploy::scheduler::archive::conf_file') @@ -122,4 +142,11 @@ ], } + # Update metrics cron every hours (takes ~13min) + profile::cron::d {'scheduler_update_metrics': + user => $user, + command => "/usr/bin/swh scheduler --config-file ${config_file} origin update-metrics", + minute => 'fqdn_rand', + require => Package[$packages], + } } diff --git a/site-modules/profile/templates/swh/deploy/scheduler/swh-scheduler-update-metrics.service.erb b/site-modules/profile/templates/swh/deploy/scheduler/swh-scheduler-update-metrics.service.erb new file mode 100644 --- /dev/null +++ b/site-modules/profile/templates/swh/deploy/scheduler/swh-scheduler-update-metrics.service.erb @@ -0,0 +1,17 @@ +# Scheduler Update Metrics unit file +# Managed by puppet class profile::swh::deploy::scheduler +# Changes will be overwritten + +[Unit] +Description=Software Heritage scheduler update-metrics +Requires=network.target +After=network.target + +[Service] +User=<%= @user %> +Group=<%= @group %> +Type=simple +ExecStart=/usr/bin/swh scheduler --config-file <%= @config_file %> origin update-metrics + +[Install] +WantedBy=multi-user.target diff --git a/site-modules/profile/templates/swh/deploy/scheduler/swh-scheduler-update-metrics.timer.erb b/site-modules/profile/templates/swh/deploy/scheduler/swh-scheduler-update-metrics.timer.erb new file mode 100644 --- /dev/null +++ b/site-modules/profile/templates/swh/deploy/scheduler/swh-scheduler-update-metrics.timer.erb @@ -0,0 +1,9 @@ +[Install] +WantedBy=timers.target + +[Timer] +OnCalendar=daily +Unit=swh-scheduler-update-metrics.service + +[Unit] +Description=regular scheduler update-metrics refresh