]> git.openstreetmap.org Git - chef.git/blob - cookbooks/networking/templates/default/interfaces.erb
Add optional support for generating netplan configuration
[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 <% if interface[:bond] -%>
7 <% interface[:bond][:slaves].each do |slave| -%>
8
9 iface <%= slave %> inet manual
10       bond-master <%= interface[:interface] %>
11 <% end -%>
12
13 auto <%= interface[:bond][:slaves].sort.uniq.join(" ") %>
14 <% end -%>
15
16 iface <%= interface[:interface] %> <%= interface[:family] %> static
17 <% if interface[:interface] =~ /\.\d+$/ -%>
18       vlan-raw-device <%= interface[:interface].split(".").first %>
19 <% end -%>
20       address <%= interface[:address] %>
21 <% if interface[:family] == "inet" -%>
22       netmask <%= interface[:netmask] %>
23 <% elsif interface[:family] == "inet6" -%>
24       netmask <%= interface[:prefix] %>
25 <% end -%>
26 <% if interface[:hwaddress] -%>
27       hwaddress <%= interface[:hwaddress] %>
28 <% end -%>
29 <% if interface[:gateway] -%>
30 <% if interface[:network].include?(interface[:gateway]) or IPAddr.new("fe80::/64").include?(interface[:gateway]) -%>
31       gateway <%= interface[:gateway] %>
32       metric <%= interface[:metric] %>
33 <% else -%>
34       post-up /sbin/ip -f <%= interface[:family] %> route add <%= interface[:gateway] %> dev <%= interface[:interface] %>
35       post-up /sbin/ip -f <%= interface[:family] %> route add default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
36       pre-down /sbin/ip -f <%= interface[:family] %> route del default metric <%= interface[:metric] %> via <%= interface[:gateway] %>
37       pre-down /sbin/ip -f <%= interface[:family] %> route del <%= interface[:gateway] %> dev <%= interface[:interface] %>
38 <% end -%>
39 <% end -%>
40 <% if interface[:family] == "inet6" -%>
41       autoconf 0
42 <% end -%>
43 <% if interface[:bond] -%>
44       bond-mode <%= interface[:bond][:mode] || "active-backup" %>
45       bond-slaves none
46       bond-primary <%= interface[:bond][:slaves].first %>
47       bond-miimon <%= interface[:bond][:miimon] || 100 %>
48 <% if interface[:bond][:xmithashpolicy] -%>
49       bond_xmit_hash_policy <%= interface[:bond][:xmithashpolicy] %>
50 <% end -%>
51 <% if interface[:bond][:lacprate] -%>
52       bond-lacp-rate <%= interface[:bond][:lacprate] %>
53 <% end -%>
54       bond-downdelay <%= interface[:bond][:downdelay] || 200 %>
55       bond-updelay <%= interface[:bond][:updelay] || 200 %>
56 <% end -%>
57 <% end -%>
58 <% end -%>
59
60 auto lo <%= node[:networking][:interfaces].collect { |n,i| i[:interface] }.compact.sort.uniq.join(" ") %>