class redisha::redis ( Boolean $manage_repo = $redisha::manage_repo, Boolean $redisha_members_lookup = $redisha::redisha_members_lookup, Optional[String] $redisha_members_role = $redisha::redisha_members_role, Array $redisha_servers = $redisha::redisha_servers, Stdlib::Host $redis_host = $redisha::params::redis_host, Stdlib::Port $redis_port = $redisha::params::redis_port, Optional[String] $requirepass = $redisha::params::requirepass, Optional[String] $dnf_module_stream = $redisha::params::dnf_module_stream, Integer[1] $databases = $redisha::params::databases, Optional[Variant[String, Sensitive[String], Deferred]] $masterauth = $redisha::params::masterauth, ) 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 { # check if this is the master_node if $servers_array[0] == $::facts['networking']['fqdn'] { class { 'redis': bind => $redis_host, port => $redis_port, databases => $databases, requirepass => $requirepass, masterauth => $masterauth, dnf_module_stream => $dnf_module_stream, ulimit_managed => false, } }else{ class { 'redis': bind => $redis_host, port => $redis_port, databases => $databases, requirepass => $requirepass, masterauth => $masterauth, dnf_module_stream => $dnf_module_stream, ulimit_managed => false, replicaof => "${servers_array[0]} ${redis_port}", } } } }