]> git.openstreetmap.org Git - chef.git/blobdiff - cookbooks/networking/templates/default/interfaces.erb
Tune bonding on odin
[chef.git] / cookbooks / networking / templates / default / interfaces.erb
index 89fc316eb4aa1810321eda4af1787a498c9c8bdb..d0d4dd7c8099628398177aac41ad01e2c25b0f62 100644 (file)
@@ -2,34 +2,62 @@
 
 iface lo inet loopback
 <% node[:networking][:interfaces].each do |name,interface| -%>
 
 iface lo inet loopback
 <% node[:networking][:interfaces].each do |name,interface| -%>
+<% if interface[:interface] -%>
+<% if interface[:bond] -%>
+<% interface[:bond][:slaves].each do |slave| -%>
+
+iface <%= slave %> inet manual
+      bond-master <%= interface[:interface] %>
+<% end -%>
+
+auto <%= interface[:bond][:slaves].sort.uniq.join(" ") %>
+<% end -%>
 
 iface <%= interface[:interface] %> <%= interface[:family] %> static
 
 iface <%= interface[:interface] %> <%= interface[:family] %> static
-      address   <%= interface[:address] %>
+<% if interface[:interface] =~ /\.\d+$/ -%>
+      vlan-raw-device <%= interface[:interface].split(".").first %>
+<% end -%>
+      address <%= interface[:address] %>
 <% if interface[:family] == "inet" -%>
 <% if interface[:family] == "inet" -%>
-      netmask   <%= interface[:netmask] %>
+      netmask <%= interface[:netmask] %>
 <% elsif interface[:family] == "inet6" -%>
 <% elsif interface[:family] == "inet6" -%>
-      netmask   <%= interface[:prefix] %>
+      netmask <%= interface[:prefix] %>
 <% end -%>
 <% if interface[:hwaddress] -%>
       hwaddress <%= interface[:hwaddress] %>
 <% end -%>
 <% if interface[:gateway] -%>
 <% if interface[:network].include?(interface[:gateway]) or IPAddr.new("fe80::/64").include?(interface[:gateway]) -%>
 <% end -%>
 <% if interface[:hwaddress] -%>
       hwaddress <%= interface[:hwaddress] %>
 <% end -%>
 <% if interface[:gateway] -%>
 <% if interface[:network].include?(interface[:gateway]) or IPAddr.new("fe80::/64").include?(interface[:gateway]) -%>
-      gateway   <%= interface[:gateway] %>
-      metric    <%= interface[:metric] %>
+      gateway <%= interface[:gateway] %>
+      metric <%= interface[:metric] %>
 <% else -%>
 <% else -%>
-      post-up   /sbin/ip -f <%= interface[:family] %> route add <%= interface[:gateway] %> dev <%= interface[:interface] %>
-      post-up   /sbin/ip -f <%= interface[:family] %> route add default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
-      pre-down  /sbin/ip -f <%= interface[:family] %> route del default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
-      pre-down  /sbin/ip -f <%= interface[:family] %> route del <%= interface[:gateway] %> dev <%= interface[:interface] %>
+      post-up /sbin/ip -f <%= interface[:family] %> route add <%= interface[:gateway] %> dev <%= interface[:interface] %>
+      post-up /sbin/ip -f <%= interface[:family] %> route add default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
+      pre-down /sbin/ip -f <%= interface[:family] %> route del default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
+      pre-down /sbin/ip -f <%= interface[:family] %> route del <%= interface[:gateway] %> dev <%= interface[:interface] %>
 <% end -%>
 <% end -%>
 <% if interface[:mtu] -%>
 <% end -%>
 <% end -%>
 <% if interface[:mtu] -%>
-      mtu       <%= interface[:mtu] %>
+      mtu <%= interface[:mtu] %>
 <% end -%>
 <% if interface[:family] == "inet6" -%>
 <% end -%>
 <% if interface[:family] == "inet6" -%>
-      autoconf  0
+      autoconf 0
+<% end -%>
+<% if interface[:bond] -%>
+      bond-mode <%= interface[:bond][:mode] || "active-backup" %>
+      bond-slaves none
+      bond-primary <%= interface[:bond][:slaves].first %>
+      bond-miimon <%= interface[:bond][:miimon] || 100 %>
+<% if interface[:bond][:xmithashpolicy] -%>
+      bond_xmit_hash_policy <%= interface[:bond][:xmithashpolicy] %>
+<% end -%>
+<% if interface[:bond][:lacprate] -%>
+      bond-lacp-rate <%= interface[:bond][:lacprate] %>
+<% end -%>
+      bond-downdelay <%= interface[:bond][:downdelay] || 200 %>
+      bond-updelay <%= interface[:bond][:updelay] || 200 %>
+<% end -%>
 <% end -%>
 <% end -%>
 
 <% end -%>
 <% end -%>
 
-auto lo <%= node[:networking][:interfaces].collect { |n,i| i[:interface] }.sort.uniq.join(" ") %>
+auto lo <%= node[:networking][:interfaces].collect { |n,i| i[:interface] }.compact.sort.uniq.join(" ") %>