diff --git a/chef/cookbooks/designate/recipes/mdns.rb b/chef/cookbooks/designate/recipes/mdns.rb index 16ff8ceba8..a34ad1484a 100644 --- a/chef/cookbooks/designate/recipes/mdns.rb +++ b/chef/cookbooks/designate/recipes/mdns.rb @@ -20,15 +20,23 @@ dns = node_search_with_cache("roles:dns-server").first dnsmaster = dns[:dns][:master_ip] -dnsslaves = dns[:dns][:slave_ips].to_a -dnsservers = [dnsmaster] + dnsslaves -network_settings = DesignateHelper.network_settings(node) +# hidden masters are designate-mdns services, in ha this service will be running on multiple +# hosts and any host can be asked to update the zone (when a recordset, corresponding to a vm is +# created) on the real-master so all have to be listed as master in the pool. +hiddenmasters = node_search_with_cache("roles:designate-server").map do |n| + { "host" => Barclamp::Inventory.get_network_by_type(n, "admin").address, "port" => 5354 } +end + +# the host with VIP will use that ip as the outgoing ip when connecting to the real-master +if node[:designate][:ha][:enabled] + hiddenmasters += [{ "host" => CrowbarPacemakerHelper.cluster_vip(node, "admin"), "port" => 5354 }] +end # One could have multiple pools in desginate. And # Desginate needs to have a default pool, this pools # id is hardcoded in the designate conf. By reusing that -# id we let designate know how crowbar's deployement of +# id we let designate know how crowbar's deployment of # dns servers looks like. # This pool id can be generated by in proposal, but this will change # with every delete/create cycle of proposal. This might mess @@ -41,11 +49,11 @@ "attributes" => {}, "ns_records" => [{ "hostname" => "#{dns[:fqdn]}.", "priority" => 1 }], "nameservers" => dnsservers.map { |ip| { "host" => ip, "port" => 53 } }, - "also_notifies" => dnsslaves.map { |ip| { "host" => ip, "port" => 53 } }, + "also_notifies" => [], "targets" => [{ "type" => "bind9", - "description" => "BIND9 Server 1", - "masters" => [{ "host" => network_settings[:mdns_bind_host], "port" => 5354 }], + "description" => "BIND9 Server on node with role dns-server", + "masters" => hiddenmasters, "options" => { "host" => dnsmaster, "port" => 53,