X-Git-Url: https://git.openstreetmap.org./chef.git/blobdiff_plain/7b9ec4b60ee39614d1d083d7220e76b07d2b275f..9694d64a67dca98ce1d574852e7114daaff4727f:/cookbooks/geodns/recipes/default.rb diff --git a/cookbooks/geodns/recipes/default.rb b/cookbooks/geodns/recipes/default.rb index 0bd74fb8e..a50b71141 100644 --- a/cookbooks/geodns/recipes/default.rb +++ b/cookbooks/geodns/recipes/default.rb @@ -1,14 +1,14 @@ # -# Cookbook Name:: geodns +# Cookbook:: geodns # Recipe:: default # -# Copyright 2011, OpenStreetMap Foundation +# Copyright:: 2011, OpenStreetMap Foundation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -17,67 +17,87 @@ # limitations under the License. # -package "pdns-server" -package "pdns-backend-geo" +include_recipe "geoipupdate" -service "pdns" do - action [ :enable, :start ] - supports :status => true, :restart => true, :reload => true -end +servers = search(:node, "roles:geodns").collect(&:name).sort + +servers << "dummy.example.com" if servers.empty? + +package %w[ + gdnsd +] -file "/etc/powerdns/pdns.d/pdns.simplebind" do - action :delete - notifies :reload, resources(:service => "pdns") +directory "/etc/gdnsd/config.d" do + owner "nobody" + group "nogroup" + mode "755" end -template "/etc/powerdns/pdns.d/geo.conf" do - source "geo.conf.erb" - owner "root" - group "root" - mode "0600" - notifies :reload, resources(:service => "pdns") +%w[nominatim].each do |zone| + %w[map resource weighted].each do |type| + template "/etc/gdnsd/config.d/#{zone}.#{type}" do + action :create_if_missing + source "zone.#{type}.erb" + owner "nobody" + group "nogroup" + mode "644" + variables :zone => zone + end + end end -directory "/etc/powerdns/zones.d" do +template "/etc/gdnsd/config" do + source "config.erb" owner "root" group "root" - mode "0755" + mode "644" + notifies :restart, "service[gdnsd]" end -template "/etc/powerdns/zones.d/tile.conf" do - source "tile.conf.erb" +template "/etc/gdnsd/zones/geo.openstreetmap.org" do + source "geo.erb" owner "root" group "root" - mode "0644" - notifies :reload, resources(:service => "pdns") + mode "644" + variables :servers => servers + notifies :restart, "service[gdnsd]" end -template "/etc/cron.weekly/geodns-update" do - source "cron.erb" - owner "root" - group "root" - mode "0755" +service "gdnsd" do + action [:enable, :start] + supports :status => true, :restart => true, :reload => true end -execute "geodns-sync-countries" do - command "rsync -z rsync://countries-ns.mdc.dk/zone/zz.countries.nerd.dk.rbldnsd /etc/powerdns/countries.conf" +systemd_service "gdnsd-reload" do + description "Reload gdnsd configuration" + type "simple" user "root" - group "root" - not_if { File.exist?("/etc/powerdns/countries.conf") } + exec_start "/bin/systemctl reload-or-restart gdnsd" + standard_output "null" + sandbox true + restrict_address_families "AF_UNIX" +end + +systemd_path "gdnsd-reload" do + description "Reload gdnsd configuration" + path_changed "/etc/gdnsd/config.d" +end + +service "gdnsd-reload.path" do + action [:enable, :start] + subscribes :restart, "systemd_path[gdnsd-reload]" end firewall_rule "accept-dns-udp" do action :accept - source "net" - dest "fw" - proto "udp" + context :incoming + protocol :udp dest_ports "domain" end firewall_rule "accept-dns-tcp" do action :accept - source "net" - dest "fw" - proto "tcp:syn" + context :incoming + protocol :tcp dest_ports "domain" end