diff --git a/manifests/swh/deploy/storage_listener.pp b/manifests/swh/deploy/storage_listener.pp new file mode 100644 index 0000000..cf40924 --- /dev/null +++ b/manifests/swh/deploy/storage_listener.pp @@ -0,0 +1,68 @@ +# Deployment of the swh.storage.listener + +class profile::swh::deploy::storage_listener { + $conf_directory = hiera('swh::deploy::storage_listener::conf_directory') + $conf_file = hiera('swh::deploy::storage_listener::conf_file') + $user = hiera('swh::deploy::storage_listener::user') + $group = hiera('swh::deploy::storage_listener::group') + $database = hiera('swh::deploy::storage_listener::database') + $topic_prefix = hiera('swh::deploy::storage_listener::topic_prefix') + $kafka_brokers = hiera_array('swh::deploy::storage_listener::kafka_brokers') + $poll_timeout = hiera('swh::deploy::storage_listener::poll_timeout') + + include ::systemd + + $service_name = 'swh-storage-listener' + $service_file = "/etc/systemd/system/${service_name}.service" + + package {'python3-swh.storage.listener': + ensure => latest, + notify => Service['swh-storage-listener'], + } + + file {$conf_directory: + ensure => directory, + owner => 'root', + group => $group, + mode => '0750', + } + + # Template uses variables + # - $database + # - $kafka_brokers + # - $topic_prefix + # - $poll_timeout + # + file {$conf_file: + ensure => present, + owner => 'root', + group => $group, + mode => '0640', + require => File[$conf_directory], + content => template('profile/swh/deploy/storage_listener/listener.ini.erb'), + notify => Service[$service_name], + } + + # Template uses variables + # - $user + # - $group + # + file {$service_file: + ensure => present, + owner => 'root', + group => 'root', + mode => '0644', + content => template('profile/swh/deploy/storage_listener/swh-storage-listener.service.erb'), + require => Package['python3-swh.storage.listener'], + notify => [ + Exec['systemd-daemon-reload'], + Service[$service_name], + ], + } + + service {$service_name: + ensure => running, + enable => true, + require => File[$service_file], + } +} diff --git a/templates/swh/deploy/storage_listener/listener.ini.erb b/templates/swh/deploy/storage_listener/listener.ini.erb new file mode 100644 index 0000000..6ecc515 --- /dev/null +++ b/templates/swh/deploy/storage_listener/listener.ini.erb @@ -0,0 +1,9 @@ +# swh.storage.listener configuration file +# File managed by puppet - modifications will be overwritten + +[main] +database = <%= @database %> +brokers = <%= @kafka_brokers.join(',') %> +topic_prefix = <%= @topic_prefix %> +poll_timeout = <%= @poll_timeout %> + diff --git a/templates/swh/deploy/storage_listener/swh-storage-listener.service.erb b/templates/swh/deploy/storage_listener/swh-storage-listener.service.erb new file mode 100644 index 0000000..f847022 --- /dev/null +++ b/templates/swh/deploy/storage_listener/swh-storage-listener.service.erb @@ -0,0 +1,18 @@ +# Storage Listener unit file +# Managed by puppet class profile::swh::deploy::storage_listener +# Changes will be overwritten + +[Unit] +Description=Software Heritage storage listener +Requires=network.target kafka.service +After=network.target kafka.service + +[Service] +User=<%= @user %> +Group=<%= @group %> +Type=simple +ExecStart=python3 -m swh.storage.listener +Restart=Always + +[Install] +WantedBy=multi-user.target