diff --git a/site-modules/profile/manifests/swh/deploy/indexer_journal_client.pp b/site-modules/profile/manifests/swh/deploy/indexer_journal_client.pp --- a/site-modules/profile/manifests/swh/deploy/indexer_journal_client.pp +++ b/site-modules/profile/manifests/swh/deploy/indexer_journal_client.pp @@ -1,8 +1,8 @@ # Deployment of the swh.indexer.journal_client define profile::swh::deploy::indexer_journal_client ( - $ensure = present, + $ensure = present, $instance_name = $title, - $sentry_name = $title, + $sentry_name = $title, ) { include ::profile::swh::deploy::base_indexer @@ -13,8 +13,6 @@ $config_path = "${config_directory}/${config_file}" $service_basename = $::profile::swh::deploy::base_indexer::service_basename - $service_name = "${service_basename}@${instance_name}.service" - $parameters_conf_path = "${service_name}/parameters.conf" case $ensure { 'present', 'running': { @@ -30,47 +28,82 @@ owner => "root", group => $::profile::swh::deploy::base_indexer::group, mode => "0640", - content => inline_template("<%= @config.to_yaml %>\n"), + content => inline_yaml($config), notify => Service[$service_name], require => File[$config_directory], } - # Template uses variables - # - $config_path - # - $sentry_dsn - # - $sentry_environment - # - $sentry_swh_package - # - $loglevel - ::systemd::dropin_file {$parameters_conf_path: - ensure => present, - unit => $service_name, - filename => 'parameters.conf', - content => template('profile/swh/deploy/journal/parameters.conf.erb'), + $nb_instances = lookup("swh::deploy::indexer_journal_client::${instance_name}::nb_instances", { + default_value => 1, + value_type => Integer + }) + + + Integer[1, $nb_instances].each | $instance_id | { + $service_name = "${service_basename}@${instance_name}_${instance_id}.service" + $parameters_conf_path = "${service_name}/parameters.conf" + + # Template uses variables + # - $config_path + # - $sentry_dsn + # - $sentry_environment + # - $sentry_swh_package + # - $loglevel + ::systemd::dropin_file {$parameters_conf_path: + ensure => present, + unit => $service_name, + filename => 'parameters.conf', + content => template('profile/swh/deploy/journal/parameters.conf.erb'), + } + + service {$service_name: + ensure => running, + enable => true, + require => [ + File[$config_path], + ], + } } + # clean up old service names + + $service_name = "${service_basename}@${instance_name}.service" + $parameters_conf_path = "${service_name}/parameters.conf" service {$service_name: - ensure => running, - enable => true, - require => [ - File[$config_path], - ], + ensure => stopped, } - } - - # Otherwise, clean up everything - default: { ::systemd::dropin_file {$parameters_conf_path: ensure => absent, unit => $service_name, filename => 'parameters.conf', } - service {$service_basename: - ensure => stopped, - } + } - file {$config_path: - ensure => absent, + # Otherwise, clean up everything + default: { + $nb_instances = lookup("swh::deploy::indexer_journal_client::${instance_name}::nb_instances", { + default_value => 1, + value_type => Integer + }) + + Integer[1, $nb_instances].each | $instance_id | { + $service_name = "${service_basename}@${instance_name}_${instance_id}.service" + $parameters_conf_path = "${service_name}/parameters.conf" + + ::systemd::dropin_file {$parameters_conf_path: + ensure => absent, + unit => $service_name, + filename => 'parameters.conf', + } + + service {$service_basename: + ensure => stopped, + } + + file {$config_path: + ensure => absent, + } } } }