From 86f0ff5aa939f5137aa9d44b7b7ffedb47616c45 Mon Sep 17 00:00:00 2001
From: Attila Farkas <x394097@fi.muni.cz>
Date: Fri, 4 Oct 2019 15:27:59 +0200
Subject: [PATCH] remove import_playbook

---
 modules/file_generator.py | 10 +++++++---
 templates/playbook        | 25 +++++++++++++++++++++++--
 2 files changed, 30 insertions(+), 5 deletions(-)

diff --git a/modules/file_generator.py b/modules/file_generator.py
index 60a0083..dcf88c7 100644
--- a/modules/file_generator.py
+++ b/modules/file_generator.py
@@ -55,11 +55,15 @@ def generate_vagrantfile(definitions):
     print("Info: Vagrantfile successfully created.")
 
 
-def _generate_playbook():
+def _generate_playbook(definitions):
     """ Generates the main playbook. """
 
+    host_map = create_host_map(definitions["net_mappings"], definitions["router_mappings"], definitions["hosts"])
+    network = create_network_map(
+            definitions["net_mappings"], definitions["router_mappings"]) 
+    
     template = _load_template("playbook")
-    output = template.render()
+    output = template.render(hosts=host_map, routers=network)
 
     try:
         os.mkdir("provisioning")
@@ -124,7 +128,7 @@ def _generate_routers_role(definitions):
 def generate_ansible_files(device_definitions):
     """ Generates files for ansible. """
     
-    _generate_playbook()
+    _generate_playbook(device_definitions)
     _generate_device_configuration(device_definitions)
     _generate_hosts_role(device_definitions)
     _generate_routers_role(device_definitions)
diff --git a/templates/playbook b/templates/playbook
index e8ec847..4967233 100644
--- a/templates/playbook
+++ b/templates/playbook
@@ -1,7 +1,28 @@
 ---
-# Main ansible playground
+# Main ansible playbook
 
-  - import_playbook: device_configuration.yml
+#- import_playbook: device_configuration.yml - for new version
+
+- name: Configuring all hosts
+  hosts: {{ hosts|map(attribute='host_name')|unique|join(',') }}
+  become: yes
+  roles:
+    - hosts
+
+{% for host in hosts %}
+- name: Configuring host {{ host.host_name }}
+  hosts: {{ host.host_name }}
+  become: yes
+  tasks:
+  - name: Change default gateway
+    command: route add default gw {{ host.router_ip }} {{ host.interface }}
+
+{% endfor %}
+- name: Configuring all routers
+  hosts: {{ routers|map(attribute='router_name')|unique|join(',') }}
+  become: yes
+  roles:
+    - routers
 
 # Write your custom configuration here:
 
-- 
GitLab