diff --git a/modules/routing_generator.py b/modules/routing_generator.py index 1bc6892a3269dc571ed428ae6ecb8e2c4814ef57..5aa8d4eb63efc0d82b894d4b4526dfd50f57c5bb 100644 --- a/modules/routing_generator.py +++ b/modules/routing_generator.py @@ -92,9 +92,23 @@ def _add_default_route(default_gateway, target_interface_ip, target_routes_list.append(new_interface) +def _configure_auto_on_ansible_interface(target_routes_list, + is_border_router=False): + """Call interfaces role on the main interface to set auto.""" + new_interface = dict() + new_interface["interface_ip"] = "{{ ansible_default_ipv4.address |" \ + "default(ansible_all_ipv4_addresses[0]) }}" + if is_border_router: + new_interface["interface_default_gateway"] =\ + "{{ ansible_default_ipv4.gateway }}" + target_routes_list.insert(0, new_interface) + + def _create_host_routing(target_host_name, input_definitions, flags): """Generate list of routes for the given host.""" routes = [] + if "border_router" in flags and flags["border_router"]: + _configure_auto_on_ansible_interface(routes) mapping = None for host_mapping in input_definitions["net_mappings"]: @@ -127,6 +141,8 @@ def _create_host_routing(target_host_name, input_definitions, flags): def _create_router_routing(router_name, input_definitions, flags): """Generate list of routes for the given router.""" routes = [] + if "border_router" in flags and flags["border_router"]: + _configure_auto_on_ansible_interface(routes) if flags["border_router"]: interface_ip = _find_iface_ip_in_network(router_name, @@ -140,6 +156,7 @@ def _create_router_routing(router_name, input_definitions, flags): def _create_border_router_routing(input_definitions): """Generate routes for the border router.""" routes = [] + _configure_auto_on_ansible_interface(routes, True) for network in input_definitions["networks"]: if network["name"] == BORDER_ROUTER_NETWORK_NAME: diff --git a/templates/br b/templates/br index e9201f91243ff6914466654cd5ac9531d9b9112f..5b26c4482607d9f3e6224060ace3d6d2e8e09dfb 100644 --- a/templates/br +++ b/templates/br @@ -10,8 +10,8 @@ name: interface vars: interface_ip: "{{ interface.interface_ip }}" - interface_default_gateway: "{{ interface.interface_default_gateway }}" - interface_routes: "{{ interface.interface_routes }}" + interface_default_gateway: "{{ interface.interface_default_gateway | default('') }}" + interface_routes: "{{ interface.interface_routes | default([]) }}" loop: "{{ routes }}" loop_control: loop_var: interface diff --git a/templates/interface/tasks/interface.yml b/templates/interface/tasks/interface.yml index 9433f40620278c43323ba824462239d1a5a6b3d3..f51f0b29e9339a5c88885fa2715a3bbc914c9c1f 100644 --- a/templates/interface/tasks/interface.yml +++ b/templates/interface/tasks/interface.yml @@ -12,7 +12,7 @@ netmask 24 mtu {{ interface_mtu }} {% if interface_default_gateway -%} - up ip route del 0/0 + gateway {{ interface_default_gateway }} up route add default gw {{ interface_default_gateway }} {% endif -%} {% if interface_routes -%} diff --git a/templates/separate_devices b/templates/separate_devices index 4181f0a3b19ef3e281d8b2e2cd28e54115991f93..940dace19275dc66624f373ecc06b0746fac9942 100644 --- a/templates/separate_devices +++ b/templates/separate_devices @@ -10,8 +10,8 @@ name: interface vars: interface_ip: "{{ interface.interface_ip }}" - interface_default_gateway: "{{ interface.interface_default_gateway }}" - interface_routes: "{{ interface.interface_routes }}" + interface_default_gateway: "{{ interface.interface_default_gateway | default('') }}" + interface_routes: "{{ interface.interface_routes | default([])}}" loop: "{{ routes }}" loop_control: loop_var: interface