]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/networking/recipes/default.rb
Add optional support for using systemd-resolved
[chef.git] / cookbooks / networking / recipes / default.rb
index a308e535d2b1958eb8c5bfcfca18ccf85f7b13e8..6459a7e9dc91b840d0b07fec04980e79e10e1cb1 100644 (file)
@@ -174,19 +174,52 @@ template "/etc/hosts" do
   mode 0o644
 end
 
-unless node[:networking][:nameservers].empty?
-  link "/etc/resolv.conf" do
-    action :delete
-    link_type :symbolic
-    to "/run/resolvconf/resolv.conf"
-    only_if { File.symlink?("/etc/resolv.conf") }
+if node[:networking][:resolved]
+  service "systemd-resolved" do
+    action [:enable, :start]
+  end
+
+  directory "/etc/systemd/resolved.conf.d" do
+    owner "root"
+    group "root"
+    mode 0o755
   end
 
-  template "/etc/resolv.conf" do
-    source "resolv.conf.erb"
+  template "/etc/systemd/resolved.conf.d/99-chef.conf" do
+    source "resolved.conf.erb"
     owner "root"
     group "root"
     mode 0o644
+    notifies :restart, "service[systemd-resolved]"
+  end
+
+  file "/etc/resolv.conf" do
+    action :delete
+    not_if { ::File.symlink?("/etc/resolv.conf") }
+  end
+
+  link "/etc/resolv.conf" do
+    to "../run/systemd/resolve/stub-resolv.conf"
+  end
+
+  package "resolvconf" do
+    action :purge
+  end
+else
+  unless node[:networking][:nameservers].empty?
+    link "/etc/resolv.conf" do
+      action :delete
+      link_type :symbolic
+      to "/run/resolvconf/resolv.conf"
+      only_if { File.symlink?("/etc/resolv.conf") }
+    end
+
+    template "/etc/resolv.conf" do
+      source "resolv.conf.erb"
+      owner "root"
+      group "root"
+      mode 0o644
+    end
   end
 end