]> git.openstreetmap.org Git - chef.git/blob - cookbooks/networking/templates/default/interfaces.erb
Add support for bonding and VLANs
[chef.git] / cookbooks / networking / templates / default / interfaces.erb
1 # DO NOT EDIT - This file is being maintained by Chef
2
3 iface lo inet loopback
4 <% node[:networking][:interfaces].each do |name,interface| -%>
5 <% if interface[:interface] -%>
6
7 iface <%= interface[:interface] %> <%= interface[:family] %> static
8       address   <%= interface[:address] %>
9 <% if interface[:family] == "inet" -%>
10       netmask   <%= interface[:netmask] %>
11 <% elsif interface[:family] == "inet6" -%>
12       netmask   <%= interface[:prefix] %>
13 <% end -%>
14 <% if interface[:hwaddress] -%>
15       hwaddress <%= interface[:hwaddress] %>
16 <% end -%>
17 <% if interface[:gateway] -%>
18 <% if interface[:network].include?(interface[:gateway]) or IPAddr.new("fe80::/64").include?(interface[:gateway]) -%>
19       gateway   <%= interface[:gateway] %>
20       metric    <%= interface[:metric] %>
21 <% else -%>
22       post-up   /sbin/ip -f <%= interface[:family] %> route add <%= interface[:gateway] %> dev <%= interface[:interface] %>
23       post-up   /sbin/ip -f <%= interface[:family] %> route add default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
24       pre-down  /sbin/ip -f <%= interface[:family] %> route del default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
25       pre-down  /sbin/ip -f <%= interface[:family] %> route del <%= interface[:gateway] %> dev <%= interface[:interface] %>
26 <% end -%>
27 <% end -%>
28 <% if interface[:mtu] -%>
29       mtu       <%= interface[:mtu] %>
30 <% end -%>
31 <% if interface[:family] == "inet6" -%>
32       autoconf  0
33 <% end -%>
34 <% if interface[:bond] -%>
35       bond-mode <%= interface[:bond][:mode] || "active-backup" %>
36       bond-slaves <%= interface[:bond][:slaves].join(" ") %>
37       bond-primary <%= interface[:bond][:slaves].first %>
38       bond-miimon <%= interface[:bond][:miimon] || 100 %>
39       bond-downdelay <%= interface[:bond][:downdelay] || 200 %>
40       bond-updelay <%= interface[:bond][:updelay] || 200 %>
41 <% end -%>
42 <% end -%>
43 <% end -%>
44
45 auto lo <%= node[:networking][:interfaces].collect { |n,i| i[:interface] }.compact.sort.uniq.join(" ") %>