diff --git a/manifests/swh/deploy/scheduler.pp b/manifests/swh/deploy/scheduler.pp new file mode 100644 index 0000000..0fadfd8 --- /dev/null +++ b/manifests/swh/deploy/scheduler.pp @@ -0,0 +1,73 @@ +# Deployment of swh-scheduler related utilities +class profile::swh::deploy::scheduler { + $conf_file = hiera('swh::deploy::scheduler::conf_file') + $user = hiera('swh::deploy::storage::user') + $group = hiera('swh::deploy::storage::group') + $db_host = hiera('swh::deploy::storage::database') + + include ::systemd + + $listener_service_name = 'swh-scheduler-listener' + $listener_service_file = "/etc/systemd/system/${listener_service_name}.service" + $listener_service_template = "profile/swh/deploy/scheduler/${listener_service_name}.service.erb" + + $runner_service_name = 'swh-scheduler-runner' + $runner_service_file = "/etc/systemd/system/${runner_service_name}.service" + $runner_service_template = "profile/swh/deploy/scheduler/${runner_service_name}.service.erb" + + $services = [$listener_service_name, $runner_service_name] + + package {'python3-swh.scheduler': + ensure => latest, + notify => Service[$services], + } + + # Template uses variables + # - $database + # + file {$conf_file: + ensure => present, + owner => 'root', + group => $group, + mode => '0640', + content => template('profile/swh/deploy/scheduler/scheduler.ini.erb'), + notify => Service[$services], + } + + # Template uses variables + # - $user + # - $group + # + file {$listener_service_file: + ensure => present, + owner => 'root', + group => 'root', + mode => '0644', + content => template($listener_service_template), + notify => [ + Exec['systemd-daemon-reload'], + Service[$listener_service_name], + ], + } + + # Template uses variables + # - $user + # - $group + # + file {$runner_service_file: + ensure => present, + owner => 'root', + group => 'root', + mode => '0644', + content => template($runner_service_template), + notify => [ + Exec['systemd-daemon-reload'], + Service[$runner_service_name], + ], + } + + service {$services: + ensure => running, + enable => true, + } +} diff --git a/templates/swh/deploy/scheduler/scheduler.ini.erb b/templates/swh/deploy/scheduler/scheduler.ini.erb new file mode 100644 index 0000000..90af16e --- /dev/null +++ b/templates/swh/deploy/scheduler/scheduler.ini.erb @@ -0,0 +1,6 @@ +# swh.scheduler configuration file +# File managed by puppet - modifications will be overwritten + +[main] +scheduling_db = <%= @database %> + diff --git a/templates/swh/deploy/scheduler/swh-scheduler-listener.service.erb b/templates/swh/deploy/scheduler/swh-scheduler-listener.service.erb new file mode 100644 index 0000000..1be7665 --- /dev/null +++ b/templates/swh/deploy/scheduler/swh-scheduler-listener.service.erb @@ -0,0 +1,18 @@ +# Scheduler Listener unit file +# Managed by puppet class profile::swh::deploy::scheduler +# Changes will be overwritten + +[Unit] +Description=Software Heritage scheduler listener +Requires=network.target rabbitmq-server.service +After=network.target rabbitmq-server.service + +[Service] +User=<%= @user %> +Group=<%= @group %> +Type=simple +ExecStart=/usr/bin/python3 -m swh.scheduler.listener +Restart=always + +[Install] +WantedBy=multi-user.target diff --git a/templates/swh/deploy/scheduler/swh-scheduler-runner.service.erb b/templates/swh/deploy/scheduler/swh-scheduler-runner.service.erb new file mode 100644 index 0000000..8a73875 --- /dev/null +++ b/templates/swh/deploy/scheduler/swh-scheduler-runner.service.erb @@ -0,0 +1,18 @@ +# Scheduler Runner unit file +# Managed by puppet class profile::swh::deploy::scheduler +# Changes will be overwritten + +[Unit] +Description=Software Heritage scheduler runner +Requires=network.target rabbitmq-server.service +After=network.target rabbitmq-server.service + +[Service] +User=<%= @user %> +Group=<%= @group %> +Type=simple +ExecStart=/bin/sh -c 'while true; do echo running pending tasks at `/bin/date`...; /usr/bin/python3 -m swh.scheduler.celery_backend.runner; sleep 10; done' +Restart=always + +[Install] +WantedBy=multi-user.target