# profiles::haproxy::dns class profiles::haproxy::dns ( Stdlib::IP::Address $ipaddr, Array[Stdlib::Fqdn] $vrrp_cnames = [], Array[Stdlib::Fqdn] $cnames = [], Integer $order = 10, ){ # create an A record for each load balancer in a region $location_environment = "${facts['country']}-${facts['region']}-${facts['environment']}" profiles::dns::record { "${facts['networking']['fqdn']}_${location_environment}-halb_A": value => $::facts['networking']['ip'], type => 'A', record => "${location_environment}-halb", zone => $::facts['networking']['domain'], order => $order, } # export cnames for haproxy applications $cnames.each |$cname| { $parts = split($cname, '\.') $domain = join($parts[1, $parts.length], '.') profiles::dns::record { "${::facts['networking']['fqdn']}_${cname}_CNAME": value => "${location_environment}-halb", type => 'CNAME', record => "${cname}.", zone => $domain, order => $order, } } # if it is, find hosts, sort them so they dont cause changes every run $servers_array = sort(puppetdb_query( "facts[certname] { name = 'enc_role' and value = '${facts['enc_role']}' and certname in facts[certname] { name = 'country' and value = '${facts['country']}' } and certname in facts[certname] { name = 'region' and value = '${facts['region']}' } and certname in facts[certname] { name = 'environment' and value = '${facts['environment']}' } }" ).map |$fact| { $fact['certname'] }) # give enough time for a few hosts to be provisioned if length($servers_array) >= 3 { # if this is the first host in the returned filter, export a/cnames for haproxy applications if $servers_array[0] == $trusted['certname'] { ['main.unkin.net', 'unkin.net'].each |$domain| { profiles::dns::record { "${facts['networking']['fqdn']}_vrrp_${domain}_${location_environment}-halb-vrrp": value => $ipaddr, type => 'A', record => "${location_environment}-halb-vrrp", zone => $domain, order => $order, } } $vrrp_cnames.each |$cname| { $parts = split($cname, '\.') $domain = join($parts[1, $parts.length], '.') profiles::dns::record { "${::facts['networking']['fqdn']}_${cname}_CNAME": value => "${location_environment}-halb-vrrp", type => 'CNAME', record => "${cname}.", zone => $domain, order => $order, } } } } }