Allow grisu to provide DNS service to all bytemark machines
authorTom Hughes <tom@compton.nu>
Wed, 26 Jun 2019 17:36:51 +0000 (18:36 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 26 Jun 2019 17:43:03 +0000 (18:43 +0100)
cookbooks/bind/recipes/default.rb
cookbooks/bind/templates/default/named.options.erb
roles/grisu.rb
roles/ironbelly.rb
roles/ridley.rb

index 4dcfaa8..44d3643 100644 (file)
 
 include_recipe "networking"
 
+clients = search(:node, "roles:#{node[:bind][:clients]}")
+
+ipv4_clients = clients.collect do |client|
+  client.ipaddresses(:family => :inet)
+end.flatten
+
+ipv6_clients = clients.collect do |client|
+  client.ipaddresses(:family => :inet6)
+end.flatten
+
 package "bind9"
 
 service "bind9" do
@@ -39,6 +49,7 @@ template "/etc/bind/named.conf.options" do
   owner "root"
   group "root"
   mode 0o644
+  variables :ipv4_clients => ipv4_clients, :ipv6_clients => ipv6_clients
   notifies :restart, "service[bind9]"
 end
 
index a2bd23d..f9cebbc 100644 (file)
@@ -2,13 +2,13 @@
 
 acl "osm" {
        127.0.0.1/32;
-<% node.interfaces(:family => :inet).each do |interface| -%>
-       <%= interface[:network] %>/<%= interface[:prefix] %>;
+<% @ipv4_clients.sort.each do |address| -%>
+       <%= address %>/32;
 <% end -%>
 
        ::1/128;
-<% node.interfaces(:family => :inet6).each do |interface| -%>
-       <%= interface[:network] %>/<%= interface[:prefix] %>;
+<% @ipv6_clients.sort.each do |address| -%>
+       <%= address %>/128;
 <% end -%>
 };
 
index be3a48e..8e177a8 100644 (file)
@@ -2,6 +2,9 @@ name "grisu"
 description "Master role applied to grisu"
 
 default_attributes(
+  :bind => {
+    :clients => "bytemark"
+  },
   :networking => {
     :interfaces => {
       :internal_ipv4 => {
index 8bc758e..2f05572 100644 (file)
@@ -5,6 +5,9 @@ default_attributes(
   :apt => {
     :sources => ["ubuntugis-unstable"]
   },
+  :bind => {
+    :clients => "equinix"
+  },
   :dhcpd => {
     :first_address => "10.0.63.1",
     :last_address => "10.0.63.254"
index ec985da..591f31a 100644 (file)
@@ -2,6 +2,9 @@ name "ridley"
 description "Master role applied to ridley"
 
 default_attributes(
+  :bind => {
+    :clients => "ucl"
+  },
   :dhcpd => {
     :first_address => "10.0.15.1",
     :last_address => "10.0.15.254"