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, } } }