feat: create redisha module
- manage redis/sentinel clusters - ensure ulimit_managed is false - dynamically find servers in role to identify master - add redisadm and sentineladm commands - add script to check if the current host in the master
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
class redisha::sentinel (
|
||||
Boolean $redisha_members_lookup = $redisha::redisha_members_lookup,
|
||||
Optional[String] $redisha_members_role = $redisha::redisha_members_role,
|
||||
Array $redisha_servers = $redisha::redisha_servers,
|
||||
Stdlib::Port $redis_port = $redisha::params::redis_port,
|
||||
Optional[String] $requirepass = $redisha::params::requirepass,
|
||||
String[1] $master_name = $redisha::params::master_name,
|
||||
Optional[Variant[String, Sensitive[String]]] $auth_pass = $redisha::params::auth_pass,
|
||||
Integer[1] $quorum = $redisha::params::quorum,
|
||||
Enum['yes', 'no'] $sentinel_resolve_hostnames = $redisha::params::sentinel_resolve_hostnames,
|
||||
Enum['yes', 'no'] $sentinel_announce_hostnames = $redisha::params::sentinel_announce_hostnames,
|
||||
Stdlib::Host $sentinel_announce_ip = $redisha::params::sentinel_announce_ip,
|
||||
Array[Stdlib::IP::Address] $sentinel_bind = $redisha::params::sentinel_bind,
|
||||
Stdlib::Port $sentinel_port = $redisha::params::sentinel_port,
|
||||
) inherits redisha::params {
|
||||
|
||||
# if lookup is enabled
|
||||
if $redisha_members_lookup {
|
||||
|
||||
# check that the role is also set
|
||||
unless !($redisha_members_role == undef) {
|
||||
fail("redisha_members_role must be provided for ${title} when redisha_members_lookup is True")
|
||||
}
|
||||
|
||||
# if it is, find hosts, sort them so they dont cause changes every run
|
||||
$servers_array = sort(query_nodes("enc_role='${redisha_members_role}' and region='${facts['region']}'", 'networking.fqdn'))
|
||||
|
||||
# else use provided array from params
|
||||
}else{
|
||||
$servers_array = $redisha_servers
|
||||
}
|
||||
|
||||
if length($servers_array) >= 3 {
|
||||
|
||||
class { 'redis::sentinel':
|
||||
master_name => $master_name,
|
||||
redis_host => $servers_array[0],
|
||||
redis_port => $redis_port,
|
||||
requirepass => $requirepass,
|
||||
auth_pass => $auth_pass,
|
||||
quorum => $quorum,
|
||||
sentinel_resolve_hostnames => $sentinel_resolve_hostnames,
|
||||
sentinel_announce_ip => $sentinel_announce_ip,
|
||||
sentinel_announce_hostnames => $sentinel_announce_hostnames,
|
||||
sentinel_port => $sentinel_port,
|
||||
sentinel_bind => $sentinel_bind,
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user