From 8335f1c9d9594d24860acc94e68a7820e838aff1 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Mon, 4 Jul 2022 18:32:01 +0100 Subject: [PATCH] Configure NS records for geodns servers automatically --- cookbooks/dns/recipes/default.rb | 9 +++++++++ cookbooks/dns/templates/default/geo.js.erb | 5 +++++ cookbooks/geodns/recipes/default.rb | 3 +++ cookbooks/geodns/templates/default/geo.erb | 11 ++++------- 4 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 cookbooks/dns/templates/default/geo.js.erb diff --git a/cookbooks/dns/recipes/default.rb b/cookbooks/dns/recipes/default.rb index fc1643c22..98005c41e 100644 --- a/cookbooks/dns/recipes/default.rb +++ b/cookbooks/dns/recipes/default.rb @@ -128,6 +128,15 @@ template "/var/lib/dns/creds.json" do variables :passwords => passwords end +template "/var/lib/dns/include/geo.js" do + source "geo.js.erb" + owner "git" + group "git" + mode "440" + variables :geoservers => geoservers + only_if { ::Dir.exist?("/var/lib/dns/include") } +end + cookbook_file "#{node[:dns][:repository]}/hooks/post-receive" do source "post-receive" owner "git" diff --git a/cookbooks/dns/templates/default/geo.js.erb b/cookbooks/dns/templates/default/geo.js.erb new file mode 100644 index 000000000..3134f3161 --- /dev/null +++ b/cookbooks/dns/templates/default/geo.js.erb @@ -0,0 +1,5 @@ +var GEO_NS_RECORDS = [ +<% @geoservers.each do |server| -%> + NS("geo", QUALIFY("<%= server.split(".").first %>")), +<% end -%> +]; diff --git a/cookbooks/geodns/recipes/default.rb b/cookbooks/geodns/recipes/default.rb index 36813bcb4..73531de01 100644 --- a/cookbooks/geodns/recipes/default.rb +++ b/cookbooks/geodns/recipes/default.rb @@ -19,6 +19,8 @@ include_recipe "geoipupdate" +servers = search(:node, "roles:geodns").collect(&:name).sort + package %w[ gdnsd ] @@ -55,6 +57,7 @@ template "/etc/gdnsd/zones/geo.openstreetmap.org" do owner "root" group "root" mode "644" + variables :servers => servers notifies :restart, "service[gdnsd]" end diff --git a/cookbooks/geodns/templates/default/geo.erb b/cookbooks/geodns/templates/default/geo.erb index ae47b3448..719f11a9d 100644 --- a/cookbooks/geodns/templates/default/geo.erb +++ b/cookbooks/geodns/templates/default/geo.erb @@ -1,6 +1,6 @@ $TTL 86400 -@ SOA saphira.openstreetmap.org. hostmaster.openstreetmap.org. ( +@ SOA <%= @servers.first %>. hostmaster.openstreetmap.org. ( 3 ; serial 86400 ; refresh 7200 ; retry @@ -8,11 +8,8 @@ $TTL 86400 3600 ; ncache ) -@ 86400 NS balerion.openstreetmap.org. -@ 86400 NS chrysophylax.openstreetmap.org. -@ 86400 NS katie.openstreetmap.org. -@ 86400 NS saphira.openstreetmap.org. -@ 86400 NS stormfly-04.openstreetmap.org. -@ 86400 NS ridgeback.openstreetmap.org. +<% @servers.each do |server| -%> +@ 86400 NS <%= server %>. +<% end -%> nominatim 300 DYNC geoip!nominatim -- 2.43.2