From e26023875b54cce565e37c65ac6637dacfcee0ad Mon Sep 17 00:00:00 2001 From: Attila Farkas <x394097@fi.muni.cz> Date: Mon, 7 Oct 2019 14:34:17 +0200 Subject: [PATCH] fix routing to internet --- modules/ansible_data_generator.py | 9 +++++++++ modules/file_generator.py | 10 ++++++---- templates/playbook | 7 +++++-- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/modules/ansible_data_generator.py b/modules/ansible_data_generator.py index e585ea1..e720a48 100644 --- a/modules/ansible_data_generator.py +++ b/modules/ansible_data_generator.py @@ -47,3 +47,12 @@ def create_host_map(net_mappings, router_mappings, host_list): host["interface"] = _find_interface(net_mapping["host"], host_list) hosts.append(host) return hosts + +def create_network_ips(networks): + + network_ips = [] + for network in networks: + if network["cidr"] not in network_ips: + network_ips.append(network["cidr"]) + + return network_ips diff --git a/modules/file_generator.py b/modules/file_generator.py index dcf88c7..52fc35d 100644 --- a/modules/file_generator.py +++ b/modules/file_generator.py @@ -2,7 +2,7 @@ import jinja2 import os from modules.device_creator import create_devices -from modules.ansible_data_generator import create_network_map, create_host_map +from modules.ansible_data_generator import create_network_map, create_host_map, create_network_ips def _load_template(template_name): @@ -60,10 +60,11 @@ def _generate_playbook(definitions): host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"]) network = create_network_map( - definitions["net_mappings"], definitions["router_mappings"]) + definitions["net_mappings"], definitions["router_mappings"]) + network_ips = create_network_ips(definitions["networks"]) template = _load_template("playbook") - output = template.render(hosts=host_map, routers=network) + output = template.render(hosts=host_map, routers=network, network_ips=network_ips) try: os.mkdir("provisioning") @@ -79,9 +80,10 @@ def _generate_device_configuration(definitions): host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"]) network = create_network_map( definitions["net_mappings"], definitions["router_mappings"]) + network_ips = create_network_ips(definitions["networks"]) template = _load_template("device_configuration") - output = template.render(hosts=host_map, routers=network) + output = template.render(hosts=host_map, routers=network, network_ips=network_ips) try: os.mkdir("provisioning") diff --git a/templates/playbook b/templates/playbook index 4967233..cfe188a 100644 --- a/templates/playbook +++ b/templates/playbook @@ -14,8 +14,11 @@ hosts: {{ host.host_name }} become: yes tasks: - - name: Change default gateway - command: route add default gw {{ host.router_ip }} {{ host.interface }} +{% for network_ip in network_ips %} + - name: Add gateway for {{ network_ip }} + command: route add -net {{ network_ip }} gw {{ host.router_ip }} {{ host.interface }} +{% endfor %} + {% endfor %} - name: Configuring all routers -- GitLab