diff --git a/modules/file_generator.py b/modules/file_generator.py
index 60a008396090e28e8c70477758bedff072be173a..dcf88c7bac0827df13496b785a4a53f0dbb973a3 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 e8ec8473fc8e0f15098d472d3bfa3c095c5985d3..49672336869175867e66610cb75ed7efee72c222 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: