Skip to content

Commit

Permalink
Make it possible to only install sentinel role
Browse files Browse the repository at this point in the history
  • Loading branch information
Boris Tassou committed Jan 23, 2025
1 parent 3ede945 commit 2884c06
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 44 deletions.
9 changes: 9 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,15 @@ class { 'redis::sentinel':
}
```

If installation without redis-server is desired, set `contain_redis` parameter to false, i.e
```puppet
class { 'redis::sentinel':
...
contain_redis => false,
...
}
```

### Soft dependency

When managing the repo, it needs [puppetlabs/apt](https://forge.puppet.com/puppetlabs/apt).
Expand Down
11 changes: 10 additions & 1 deletion REFERENCE.md
Original file line number Diff line number Diff line change
Expand Up @@ -1554,6 +1554,7 @@ The following parameters are available in the `redis::sentinel` class:
* [`client_reconfig_script`](#-redis--sentinel--client_reconfig_script)
* [`acls`](#-redis--sentinel--acls)
* [`service_ensure`](#-redis--sentinel--service_ensure)
* [`require_redis`](#-redis--sentinel--require_redis)

##### <a name="-redis--sentinel--auth_pass"></a>`auth_pass`

Expand Down Expand Up @@ -1895,10 +1896,18 @@ Default value: `[]`

Data type: `Stdlib::Ensure::Service`


Specify if the server should be running.

Default value: `'running'`

##### <a name="-redis--sentinel--require_redis"></a>`require_redis`

Data type: `Boolean`

Require redis base class. If set to false, sentinel is installed without redis server.

Default value: `true`

## Defined types

### <a name="redis--instance"></a>`redis::instance`
Expand Down
96 changes: 53 additions & 43 deletions manifests/sentinel.pp
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@
# @param acls
# This is a way to pass an array of raw ACLs to Sentinel. The ACLs must be
# in the form of:
#
#
# user USERNAME [additional ACL options]
#
# @example Basic inclusion
Expand All @@ -145,62 +145,72 @@
# log_file => '/var/log/redis/sentinel.log',
# }
#
# @param service_ensure
# Specify if the server should be running.
# @param require_redis
# Require redis base class. If set to false, sentinel is installed without redis server.
#
class redis::sentinel (
Optional[Variant[String[1], Sensitive[String[1]]]] $auth_pass = undef,
Stdlib::Absolutepath $config_file = $redis::params::sentinel_config_file,
Stdlib::Absolutepath $config_file_orig = $redis::params::sentinel_config_file_orig,
Stdlib::Filemode $config_file_mode = '0644',
String[1] $conf_template = 'redis/redis-sentinel.conf.erb',
Boolean $daemonize = $redis::params::sentinel_daemonize,
Boolean $protected_mode = true,
Integer[1] $down_after = 30000,
Integer[1] $failover_timeout = 180000,
Redis::LogLevel $log_level = 'notice',
Stdlib::Absolutepath $log_file = $redis::params::sentinel_log_file,
String[1] $master_name = 'mymaster',
Stdlib::Host $redis_host = '127.0.0.1',
Stdlib::Port $redis_port = 6379,
Optional[String[1]] $requirepass = undef,
String[1] $package_name = $redis::params::sentinel_package_name,
String[1] $package_ensure = 'installed',
Integer[0] $parallel_sync = 1,
Stdlib::Absolutepath $pid_file = $redis::params::sentinel_pid_file,
Integer[1] $quorum = 2,
Optional[Enum['yes', 'no']] $sentinel_announce_hostnames = undef,
Optional[Stdlib::Host] $sentinel_announce_ip = undef,
Optional[Variant[String[1], Sensitive[String[1]]]] $auth_pass = undef,
Stdlib::Absolutepath $config_file = $redis::params::sentinel_config_file,
Stdlib::Absolutepath $config_file_orig = $redis::params::sentinel_config_file_orig,
Stdlib::Filemode $config_file_mode = '0644',
String[1] $conf_template = 'redis/redis-sentinel.conf.erb',
Boolean $daemonize = $redis::params::sentinel_daemonize,
Boolean $protected_mode = true,
Integer[1] $down_after = 30000,
Integer[1] $failover_timeout = 180000,
Redis::LogLevel $log_level = 'notice',
Stdlib::Absolutepath $log_file = $redis::params::sentinel_log_file,
String[1] $master_name = 'mymaster',
Stdlib::Host $redis_host = '127.0.0.1',
Stdlib::Port $redis_port = 6379,
Optional[String[1]] $requirepass = undef,
String[1] $package_name = $redis::params::sentinel_package_name,
String[1] $package_ensure = 'installed',
Integer[0] $parallel_sync = 1,
Stdlib::Absolutepath $pid_file = $redis::params::sentinel_pid_file,
Integer[1] $quorum = 2,
Optional[Enum['yes', 'no']] $sentinel_announce_hostnames = undef,
Optional[Stdlib::Host] $sentinel_announce_ip = undef,
Variant[Undef, Stdlib::IP::Address, Array[Stdlib::IP::Address]] $sentinel_bind = undef,
Stdlib::Port $sentinel_port = 26379,
Optional[Enum['yes', 'no']] $sentinel_resolve_hostnames = undef,
Optional[Stdlib::Port::Unprivileged] $sentinel_tls_port = undef,
String[1] $service_group = 'redis',
String[1] $service_name = $redis::params::sentinel_service_name,
Stdlib::Ensure::Service $service_ensure = 'running',
Boolean $service_enable = true,
String[1] $service_user = 'redis',
Optional[Stdlib::Absolutepath] $tls_cert_file = undef,
Optional[Stdlib::Absolutepath] $tls_key_file = undef,
Optional[Stdlib::Absolutepath] $tls_ca_cert_file = undef,
Optional[Stdlib::Absolutepath] $tls_ca_cert_dir = undef,
Enum['yes', 'no', 'optional'] $tls_auth_clients = 'no',
Boolean $tls_replication = false,
Stdlib::Absolutepath $working_dir = $redis::params::sentinel_working_dir,
Optional[Stdlib::Absolutepath] $notification_script = undef,
Optional[Stdlib::Absolutepath] $client_reconfig_script = undef,
Array[String[1]] $acls = [],
Stdlib::Port $sentinel_port = 26379,
Optional[Enum['yes', 'no']] $sentinel_resolve_hostnames = undef,
Optional[Stdlib::Port::Unprivileged] $sentinel_tls_port = undef,
String[1] $service_group = 'redis',
String[1] $service_name = $redis::params::sentinel_service_name,
Stdlib::Ensure::Service $service_ensure = 'running',
Boolean $service_enable = true,
String[1] $service_user = 'redis',
Optional[Stdlib::Absolutepath] $tls_cert_file = undef,
Optional[Stdlib::Absolutepath] $tls_key_file = undef,
Optional[Stdlib::Absolutepath] $tls_ca_cert_file = undef,
Optional[Stdlib::Absolutepath] $tls_ca_cert_dir = undef,
Enum['yes', 'no', 'optional'] $tls_auth_clients = 'no',
Boolean $tls_replication = false,
Stdlib::Absolutepath $working_dir = $redis::params::sentinel_working_dir,
Optional[Stdlib::Absolutepath] $notification_script = undef,
Optional[Stdlib::Absolutepath] $client_reconfig_script = undef,
Array[String[1]] $acls = [],
Boolean $require_redis = true,
) inherits redis::params {
$auth_pass_unsensitive = if $auth_pass =~ Sensitive {
$auth_pass.unwrap
} else {
$auth_pass
}

contain 'redis'
if $require_redis {
contain 'redis'
}

if $package_name != $redis::package_name {
ensure_packages([$package_name], {
ensure => $package_ensure
})
Package[$package_name] -> Class['redis']
if $require_redis {
Package[$package_name] -> Class['redis']
}
}
Package[$package_name] -> File[$config_file_orig]

Expand Down

0 comments on commit 2884c06

Please sign in to comment.