From: Tom Hughes Date: Wed, 24 May 2023 08:20:53 +0000 (+0100) Subject: Use source routing to pick the correct external network on faffy X-Git-Url: https://git.openstreetmap.org/chef.git/commitdiff_plain/8516f3d97e4431d5ee7a46779b31659007ea2bd6 Use source routing to pick the correct external network on faffy --- diff --git a/cookbooks/networking/templates/default/network.erb b/cookbooks/networking/templates/default/network.erb index 431330e2c..796bf67d6 100644 --- a/cookbooks/networking/templates/default/network.erb +++ b/cookbooks/networking/templates/default/network.erb @@ -34,6 +34,20 @@ GatewayOnLink=true <% if @interface[:metric] -%> Metric=<%= @interface[:metric] %> <% end -%> +<% if @interface[:source_route_table] -%> + +[Route] +Gateway=<%= @interface[:inet][:gateway] %> +GatewayOnLink=true +<% if @interface[:metric] -%> +Metric=<%= @interface[:metric] %> +<% end -%> +Table=<%= @interface[:source_route_table] %> + +[RoutingPolicyRule] +From=<%= @interface[:inet][:address] %> +Table=<%= @interface[:source_route_table] %> +<% end -%> <% end -%> <% if @interface.dig(:inet6, :gateway) && @interface[:inet6][:gateway] != @interface[:inet6][:address] -%> @@ -43,6 +57,20 @@ GatewayOnLink=true <% if @interface[:metric] -%> Metric=<%= @interface[:metric] %> <% end -%> +<% if @interface[:source_route_table] -%> + +[Route] +Gateway=<%= @interface[:inet6][:gateway] %> +GatewayOnLink=true +<% if @interface[:metric] -%> +Metric=<%= @interface[:metric] %> +<% end -%> +Table=<%= @interface[:source_route_table] %> + +[RoutingPolicyRule] +From=<%= @interface[:inet6][:address] %> +Table=<%= @interface[:source_route_table] %> +<% end -%> <% end -%> <% Hash(@interface.dig(:inet, :routes)).sort.each do |destination, details| -%> <% unless details[:via] == @interface[:inet][:address] -%> diff --git a/roles/faffy.rb b/roles/faffy.rb index c55b87853..7c352f4bd 100644 --- a/roles/faffy.rb +++ b/roles/faffy.rb @@ -20,6 +20,7 @@ default_attributes( :external_cogent => { :interface => "bond0.2", :role => :external, + :source_route_table => 100, :inet => { :address => "130.117.76.3", :prefix => "27", @@ -38,6 +39,7 @@ default_attributes( :interface => "bond0.3", :role => :external, :metric => 150, + :source_route_table => 150, :inet => { :address => "184.104.179.131", :prefix => "27",