diff --git a/manifests/params.pp b/manifests/params.pp index 25601ef..261fa21 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,206 +1,212 @@ # @summary This class provides a number of parameters. # @api private class redis::params inherits redis::globals { case $facts['os']['family'] { 'Debian': { $ppa_repo = 'ppa:chris-lea/redis-server' $config_dir = '/etc/redis' $config_dir_mode = '0755' $config_file = '/etc/redis/redis.conf' $config_file_orig = '/etc/redis/redis.conf.puppet' $config_owner = 'redis' $log_dir = '/var/log/redis' $log_dir_mode = '0755' $package_name = 'redis-server' $pid_file = '/var/run/redis/redis-server.pid' $workdir = '/var/lib/redis' + $bin_path = '/usr/bin' $daemonize = true $service_name = 'redis-server' $sentinel_config_file = '/etc/redis/sentinel.conf' $sentinel_config_file_orig = '/etc/redis/redis-sentinel.conf.puppet' $sentinel_service_name = 'redis-sentinel' $sentinel_daemonize = true $sentinel_package_name = 'redis-sentinel' $sentinel_log_file = '/var/log/redis/redis-sentinel.log' $sentinel_working_dir = '/var/lib/redis' $sentinel_protected_mode = true case $facts['os']['name'] { 'Ubuntu': { $config_group = 'redis' $minimum_version = $facts['os']['release']['major'] ? { '16.04' => '3.0.5', '18.04' => '4.0.9', default => '5.0.7', } $sentinel_pid_file = $facts['os']['release']['major'] ? { '16.04' => '/var/run/redis/redis-sentinel.pid', default => '/var/run/sentinel/redis-sentinel.pid', } } default: { $config_group = 'root' $minimum_version = '3.2.5' if versioncmp($facts['os']['release']['major'], '10') >= 0 { $sentinel_pid_file = '/run/sentinel/redis-sentinel.pid' } else { $sentinel_pid_file = '/var/run/redis/redis-sentinel.pid' } } } } 'RedHat': { $ppa_repo = undef $daemonize = false $config_owner = 'redis' $config_group = 'root' $config_dir_mode = '0755' $log_dir_mode = '0750' $sentinel_daemonize = false $sentinel_working_dir = '/tmp' $sentinel_protected_mode = true $scl = $redis::globals::scl if $scl { $config_dir = "/etc/opt/rh/${scl}" $config_file = "/etc/opt/rh/${scl}/redis.conf" $config_file_orig = "/etc/opt/rh/${scl}/redis.conf.puppet" $log_dir = "/var/opt/rh/${scl}/log/redis" $package_name = "${scl}-redis" $pid_file = "/var/opt/rh/${scl}/run/redis_6379.pid" $service_name = "${scl}-redis" $workdir = "/var/opt/rh/${scl}/lib/redis" + $bin_path = "/opt/rh/${scl}/root/usr/bin" $sentinel_config_file = "${config_dir}/redis-sentinel.conf" $sentinel_config_file_orig = "${config_dir}/redis-sentinel.conf.puppet" $sentinel_service_name = "${scl}-redis-sentinel" $sentinel_package_name = $package_name $sentinel_pid_file = "/var/opt/rh/${scl}/run/redis-sentinel.pid" $sentinel_log_file = "/var/opt/rh/${scl}/log/redis/sentinel.log" $minimum_version = $scl ? { 'rh-redis32' => '3.2.13', default => '5.0.5', } } else { $config_dir = '/etc/redis' $config_file = '/etc/redis.conf' $config_file_orig = '/etc/redis.conf.puppet' $log_dir = '/var/log/redis' $package_name = 'redis' $pid_file = '/var/run/redis_6379.pid' $service_name = 'redis' $workdir = '/var/lib/redis' + $bin_path = '/usr/bin' $sentinel_config_file = '/etc/redis-sentinel.conf' $sentinel_config_file_orig = '/etc/redis-sentinel.conf.puppet' $sentinel_service_name = 'redis-sentinel' $sentinel_package_name = 'redis' $sentinel_pid_file = '/var/run/redis/redis-sentinel.pid' $sentinel_log_file = '/var/log/redis/sentinel.log' # EPEL 7 and newer have 3.2 so we can assume all EL is 3.2+ $minimum_version = '3.2.12' } } 'FreeBSD': { $ppa_repo = undef $config_dir = '/usr/local/etc/redis' $config_dir_mode = '0755' $config_file = '/usr/local/etc/redis.conf' $config_file_orig = '/usr/local/etc/redis.conf.puppet' $config_group = 'wheel' $config_owner = 'redis' $log_dir = '/var/log/redis' $log_dir_mode = '0755' $package_name = 'redis' $pid_file = '/var/run/redis/redis.pid' $daemonize = true $service_name = 'redis' $workdir = '/var/db/redis' + $bin_path = '/usr/bin' $sentinel_config_file = '/usr/local/etc/redis-sentinel.conf' $sentinel_config_file_orig = '/usr/local/etc/redis-sentinel.conf.puppet' $sentinel_service_name = 'redis-sentinel' $sentinel_daemonize = true $sentinel_package_name = 'redis' $sentinel_pid_file = '/var/run/redis/redis-sentinel.pid' $sentinel_log_file = '/var/log/redis/sentinel.log' $sentinel_working_dir = '/tmp' $sentinel_protected_mode = true # pkg version $minimum_version = '3.2.4' } 'Suse': { $ppa_repo = undef $config_dir = '/etc/redis' $config_dir_mode = '0750' $config_file = '/etc/redis/redis-server.conf' $config_group = 'redis' $config_owner = 'redis' $log_dir = '/var/log/redis' $log_dir_mode = '0750' $package_name = 'redis' $pid_file = '/var/run/redis/redis-server.pid' $daemonize = true $service_name = 'redis' $workdir = '/var/lib/redis' + $bin_path = '/usr/bin' $sentinel_config_file = '/etc/redis/redis-sentinel.conf' $sentinel_config_file_orig = '/etc/redis/redis-sentinel.conf.puppet' $sentinel_service_name = 'redis-sentinel' $sentinel_daemonize = true $sentinel_package_name = 'redis' $sentinel_pid_file = '/var/run/redis/redis-sentinel.pid' $sentinel_log_file = '/var/log/redis/sentinel.log' $sentinel_working_dir = '/tmp' $sentinel_protected_mode = true # suse package version $minimum_version = '3.0.5' } 'Archlinux': { $ppa_repo = undef $config_dir = '/etc/redis' $config_dir_mode = '0755' $config_file = '/etc/redis/redis.conf' $config_file_orig = '/etc/redis/redis.conf.puppet' $config_group = 'root' $config_owner = 'root' $log_dir = '/var/log/redis' $log_dir_mode = '0755' $package_name = 'redis' $pid_file = '/var/run/redis.pid' $daemonize = true $service_name = 'redis' $workdir = '/var/lib/redis' + $bin_path = '/usr/bin' $sentinel_config_file = '/etc/redis/redis-sentinel.conf' $sentinel_config_file_orig = '/etc/redis/redis-sentinel.conf.puppet' $sentinel_service_name = 'redis-sentinel' $sentinel_daemonize = true $sentinel_package_name = 'redis' $sentinel_pid_file = '/var/run/redis/redis-sentinel.pid' $sentinel_log_file = '/var/log/redis/sentinel.log' $sentinel_working_dir = '/tmp' $sentinel_protected_mode = true # pkg version $minimum_version = '3.2.4' } default: { fail "Operating system ${facts['os']['name']} is not supported yet." } } } diff --git a/templates/service_templates/redis.service.erb b/templates/service_templates/redis.service.erb index 6b0b699..b8c47d4 100644 --- a/templates/service_templates/redis.service.erb +++ b/templates/service_templates/redis.service.erb @@ -1,27 +1,27 @@ [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 <%# Redis on Xenial is too old for systemd integration -%> <% if @facts['os']['name'] == 'Ubuntu' and @facts['os']['release']['major'] == '16.04' -%> Type=forking ExecStart=/usr/bin/redis-server <%= @redis_file_name %> <% else -%> Type=notify -ExecStart=/usr/bin/redis-server <%= @redis_file_name %> --supervised systemd +ExecStart=<%= scope['redis::params::bin_path'] %>/redis-server <%= @redis_file_name %> --supervised systemd <% end -%> -ExecStop=/usr/bin/redis-cli -p <%= @port %> shutdown +ExecStop=<%= scope['redis::params::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