Skip to content

Commit

Permalink
desginate: Add mdns as hidden master (SOC-9142)
Browse files Browse the repository at this point in the history
In crowbar's world the dns-master is the master of all and slaves
forward all queries to dns-master. When designate is enabled,
designate-mdns service component(s) become the hidden master(s).

We leave 'also_notifies' empty. It can be configured by the users
via designate-manage utility as and when needed.

designate-mdns service components, in HA, will be
running on multiple hosts and any host can be asked to update a zone
on th real-master. We add the cluster vip as the hidden master in case
HA is enabled otherwise add all servers.
  • Loading branch information
Sumit Jamgade authored and Ritesh Anand committed Aug 21, 2019
1 parent 41279a8 commit 4757bda
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions chef/cookbooks/designate/recipes/mdns.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,22 @@

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 a zone on the real-master.
hiddenmasters = []
# We use the vip for the cluster in case of HA
if node[:designate][:ha][:enabled]
hiddenmasters = [{ "host" => CrowbarPacemakerHelper.cluster_vip(node, "admin"), "port" => 5354 }]
else
hiddenmasters = node_search_with_cache("roles:designate-server").map do |n|
{ "host" => Barclamp::Inventory.get_network_by_type(n, "admin").address, "port" => 5354 }
end

# One could have multiple pools in designate. And
# designate 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
Expand All @@ -41,11 +48,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,
Expand Down

0 comments on commit 4757bda

Please sign in to comment.