From b7f7478c4db6f57b2b724e97ae4ad86be8c68338 Mon Sep 17 00:00:00 2001 From: Alexey Amerik Date: Tue, 12 Oct 2021 11:04:17 -0700 Subject: [PATCH] instances should not share systemd RuntimeDirectory, redis.service.erb to EPP --- manifests/instance.pp | 18 ++++++++++-- spec/classes/redis_spec.rb | 2 +- spec/defines/instance_spec.rb | 2 +- templates/service_templates/redis.service.epp | 29 +++++++++++++++++++ templates/service_templates/redis.service.erb | 21 -------------- 5 files changed, 46 insertions(+), 26 deletions(-) create mode 100644 templates/service_templates/redis.service.epp delete mode 100644 templates/service_templates/redis.service.erb diff --git a/manifests/instance.pp b/manifests/instance.pp index a5dc4ba4..2f463915 100644 --- a/manifests/instance.pp +++ b/manifests/instance.pp @@ -318,8 +318,8 @@ String[1] $service_group = $redis::service_group, Boolean $manage_service_file = true, String $log_file = "redis-server-${name}.log", - Stdlib::Absolutepath $pid_file = "/var/run/redis/redis-server-${name}.pid", - Variant[Stdlib::Absolutepath, Enum['']] $unixsocket = "/var/run/redis/redis-server-${name}.sock", + Stdlib::Absolutepath $pid_file = "/var/run/${service_name}/redis.pid", + Variant[Stdlib::Absolutepath, Enum['']] $unixsocket = "/var/run/${service_name}/redis.sock", Stdlib::Absolutepath $workdir = "${redis::workdir}/redis-server-${name}", ) { if $title == 'default' { @@ -366,7 +366,19 @@ owner => 'root', group => 'root', mode => '0644', - content => template('redis/service_templates/redis.service.erb'), + content => epp( + 'redis/service_templates/redis.service.epp', + { + bin_path => $redis::bin_path, + instance_title => $name, + port => $port, + redis_file_name => $redis_file_name, + service_name => $service_name, + service_user => $service_user, + ulimit => $ulimit, + ulimit_managed => $ulimit_managed, + } + ), } } else { if $ulimit_managed { diff --git a/spec/classes/redis_spec.rb b/spec/classes/redis_spec.rb index c45cf08f..c780e8e8 100644 --- a/spec/classes/redis_spec.rb +++ b/spec/classes/redis_spec.rb @@ -1406,7 +1406,7 @@ class { 'redis::globals': |Wants=network-online.target | |[Service] - |RuntimeDirectory=redis + |RuntimeDirectory=#{service_name} |RuntimeDirectoryMode=2755 |Type=notify |ExecStart=/usr/bin/redis-server #{config_file} --supervised systemd diff --git a/spec/defines/instance_spec.rb b/spec/defines/instance_spec.rb index f32e2686..d171f408 100644 --- a/spec/defines/instance_spec.rb +++ b/spec/defines/instance_spec.rb @@ -33,7 +33,7 @@ class { 'redis': with_content(%r{^bind 127.0.0.1}). with_content(%r{^logfile /var/log/redis/redis-server-app2\.log}). with_content(%r{^dir /var/lib/redis/redis-server-app2}). - with_content(%r{^unixsocket /var/run/redis/redis-server-app2\.sock}) + with_content(%r{^unixsocket /var/run/redis-server-app2/redis\.sock}) end it { is_expected.to contain_file('/var/lib/redis/redis-server-app2') } diff --git a/templates/service_templates/redis.service.epp b/templates/service_templates/redis.service.epp new file mode 100644 index 00000000..69739eda --- /dev/null +++ b/templates/service_templates/redis.service.epp @@ -0,0 +1,29 @@ +<%- | + Boolean $ulimit_managed, + Integer[0] $ulimit, + Stdlib::Absolutepath $bin_path, + Stdlib::Absolutepath $redis_file_name, + Stdlib::Port $port, + String[1] $instance_title, + String[1] $service_name, + String[1] $service_user, +| -%> +[Unit] +Description=Redis Advanced key-value store for instance <%= $instance_title %> +After=network.target +After=network-online.target +Wants=network-online.target + +[Service] +RuntimeDirectory=<%= $service_name %> +RuntimeDirectoryMode=2755 +Type=notify +ExecStart=<%= $bin_path %>/redis-server <%= $redis_file_name %> --supervised systemd +ExecStop=<%= $bin_path %>/redis-cli -p <%= $port %> shutdown +Restart=always +User=<%= $service_user %> +Group=<%= $service_user %> +<%if $ulimit_managed { %>LimitNOFILE=<%= $ulimit %><% } %> + +[Install] +WantedBy=multi-user.target diff --git a/templates/service_templates/redis.service.erb b/templates/service_templates/redis.service.erb deleted file mode 100644 index 74cf66a0..00000000 --- a/templates/service_templates/redis.service.erb +++ /dev/null @@ -1,21 +0,0 @@ -[Unit] -Description=Redis Advanced key-value store for instance <%= @title %> -After=network.target -After=network-online.target -Wants=network-online.target - -[Service] -RuntimeDirectory=redis -RuntimeDirectoryMode=2755 -Type=notify -ExecStart=<%= scope['redis::bin_path'] %>/redis-server <%= @redis_file_name %> --supervised systemd -ExecStop=<%= scope['redis::bin_path'] %>/redis-cli -p <%= @port %> shutdown -Restart=always -User=<%= @service_user %> -Group=<%= @service_user %> -<%if @ulimit_managed -%> -LimitNOFILE=<%= @ulimit %> -<% end -%> - -[Install] -WantedBy=multi-user.target