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: