@ -0,0 +1,218 @@ |
|||
/* generated by bgprtrmgr using junos-v21-core-router.j2 at XXX */ |
|||
{% import "macros.j2" as macros %} |
|||
|
|||
version 21.3R1.9; |
|||
groups { |
|||
{%- set re_groups = [] %} |
|||
{%- set lag_interfaces = [] %} |
|||
{%- for interface, subinterfaces in device|get_interfaces|subinterfaces(".") %} |
|||
{%- if interface.type.value == 'lag' %}{%- do lag_interfaces.append(interface) %}{%- endif %} |
|||
{%- if '@' in interface.name %} |
|||
{%- set re = interface.name.split("@")[1] %} |
|||
{%- do re_groups.append( re ) %} |
|||
{%- set interface_name = interface.name.split("@")[0] %} |
|||
{%- set interface_context = interface.tags|get_netbox_tags_contexts|contexts_merge_last %} |
|||
{{ re }} { |
|||
system { |
|||
host-name {{ re }}.{{ device.name }}; |
|||
services { |
|||
ssh; |
|||
} |
|||
} |
|||
interfaces { |
|||
{{ interface_name}} { |
|||
unit 0 { |
|||
family inet { |
|||
{%- for address in interface|get_addresses %}{% if address|ipv4 %} |
|||
address {{ address.address }}; |
|||
{%- endif %}{%- endfor %} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
{%- endif %} |
|||
{%- endfor %} |
|||
} |
|||
apply-groups [ {% for re in re_groups %}{{ re }}{% if not loop.last %} {% endif %}{% endfor %} ]; |
|||
system { |
|||
root-authentication { |
|||
encrypted-password "$6$uC87jp7U$04FIKNRT3VcUzqDiaxKVRVqnQM2c48Q2NpIARsSuKVVK7gezNX92B7261QV.kRHg.yswiDhUY.SF4e/qgRNdL0"; ## SECRET-DATA |
|||
} |
|||
commit synchronize; |
|||
login { |
|||
user marek.faelix { |
|||
full-name "Marek Isalski"; |
|||
uid 2000; |
|||
class super-user; |
|||
authentication { |
|||
encrypted-password "$6$4sVD2r4y$PjAIeLZ/tJcDhsQekJI9wU2l4xYf8k6mHuzvLivK2tcFXdcHMjP23Up/oUzMRWiVtEW99foiEWuXG40tL5cHy0"; |
|||
ssh-ed25519 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM05RD1X1njHcJvPTGbaCkO7rssp6T8uTCH3b6Sk4MA9 maz@lifting-shadows"; |
|||
} |
|||
} |
|||
} |
|||
services { |
|||
ssh; |
|||
} |
|||
authentication-order [ password radius ]; |
|||
syslog { |
|||
file interactive-commands { |
|||
interactive-commands any; |
|||
} |
|||
file messages { |
|||
any notice; |
|||
authorization info; |
|||
} |
|||
} |
|||
processes { |
|||
dhcp-service { |
|||
traceoptions { |
|||
file dhcp_logfile size 10m; |
|||
level all; |
|||
flag packet; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
chassis { |
|||
redundancy { |
|||
routing-engine 0 master; |
|||
routing-engine 1 backup; |
|||
} |
|||
aggregated-devices { |
|||
ethernet { |
|||
device-count {{ lag_interfaces|length }}; |
|||
} |
|||
} |
|||
fpc 0 { |
|||
pic 0 { |
|||
number-of-ports 0; |
|||
} |
|||
pic 1 { |
|||
pic-mode 100G; |
|||
} |
|||
} |
|||
} |
|||
interfaces { |
|||
|
|||
{%- for interface, subinterfaces in device|get_interfaces|subinterfaces(".") %} |
|||
{%- set interface_context = interface.tags|get_netbox_tags_contexts|contexts_merge_last %} |
|||
|
|||
{%- set interface_tags = [] %} |
|||
{%- for tag in interface.tags %} |
|||
{%- do interface_tags.append(tag.slug) %} |
|||
{%- endfor %} |
|||
|
|||
{%- if '@' in interface.name %} |
|||
/* groups interface: {{ interface.name }} */ |
|||
|
|||
{%- elif interface.mgmt_only %} |
|||
/* management interface: {{ interface.name }} */ |
|||
|
|||
{%- elif 'no-automation' in interface_tags %} |
|||
/* do not configure: {{ interface.name }} */ |
|||
|
|||
{% elif interface.lag %} |
|||
{{ interface.name }} { |
|||
gigether-options { |
|||
802.3ad {{ interface.lag.name }}; |
|||
} |
|||
|
|||
{%- elif interface.name.startswith( 'lo' ) %} |
|||
{{ interface.name }} { |
|||
{{ macros.interface_description(interface, interface_context) }} |
|||
|
|||
{%- elif interface.type.value == 'lag' %} |
|||
{{ interface.name }} { |
|||
vlan-tagging; |
|||
aggregated-ether-options { |
|||
minimum-links 1; |
|||
link-speed 100g; |
|||
} |
|||
{{ macros.interface_description(interface, interface_context) }} |
|||
{# interface_common(interface, interface_context) #} |
|||
|
|||
{%- elif interface.type.value != 'virtual' %} |
|||
{{ interface.name }} { |
|||
{{ macros.interface_description(interface) }} |
|||
|
|||
{%- if interface.mode.value == 'access' %} |
|||
unit 0 { |
|||
{# interface_vrf(interface, interface_context) #} |
|||
{# interface_common(interface, interface_context) #} |
|||
{{ macros.interface_addresses(interface, interface_context) }} |
|||
} |
|||
{%- elif interface.mode.value == 'tagged' %} |
|||
vlan-tagging; |
|||
{%- endif %} |
|||
|
|||
{%- endif %} |
|||
|
|||
{%- if ( not interface.mgmt_only ) and ( 'no-automation' not in interface_tags ) and ( '@' not in interface.name ) %} |
|||
{%- for tagged_vlan in interface.tagged_vlans %}{%- endfor %} |
|||
|
|||
{%- if interface.mode.value == 'tagged' %} |
|||
{%- for unit, subinterface in subinterfaces %} |
|||
unit {{ unit }} { |
|||
{%- if subinterface.untagged_vlan %} |
|||
vlan-id {{ subinterface.untagged_vlan.vid }}; |
|||
{%- elif unit|int %} |
|||
vlan-id {{ unit }}; |
|||
{%- endif %} |
|||
{%- set subinterface_context = subinterface.tags|get_netbox_tags_contexts|contexts_merge_last %} |
|||
{# interface_vrf(subinterface, subinterface_context) #} |
|||
{# interface_common(subinterface, subinterface_context) #} |
|||
{{ macros.interface_addresses(subinterface, subinterface_context) }} |
|||
} |
|||
{%- endfor %} |
|||
{%- endif %} |
|||
} |
|||
{%- endif %} |
|||
|
|||
{%- endfor %} |
|||
|
|||
{# |
|||
ae34 { |
|||
vlan-tagging; |
|||
aggregated-ether-options { |
|||
minimum-links 1; |
|||
link-speed 100g; |
|||
} |
|||
unit 34 { |
|||
vlan-id 34; |
|||
family inet { |
|||
address 193.162.44.13/31; |
|||
} |
|||
family inet6 { |
|||
address 2a10:f0c0::13/127; |
|||
} |
|||
} |
|||
} |
|||
ae41 { |
|||
vlan-tagging; |
|||
aggregated-ether-options { |
|||
minimum-links 1; |
|||
link-speed 100g; |
|||
} |
|||
unit 41 { |
|||
vlan-id 41; |
|||
family inet { |
|||
address 193.162.44.14/31; |
|||
} |
|||
family inet6 { |
|||
address 2a10:f0c0::14/127; |
|||
} |
|||
} |
|||
} |
|||
#} |
|||
fxp0 { |
|||
unit 0; |
|||
} |
|||
} |
|||
routing-options { |
|||
static { |
|||
route 172.22.0.0/16 next-hop 172.22.4.1; |
|||
} |
|||
} |
|||
|
@ -0,0 +1,16 @@ |
|||
{%- macro interface_description(interface, interface_context) %} |
|||
description "{% if interface.label %}{{ interface.label|replace('"','\\"') or "-" }}: {% endif %}{{ interface.description|replace('"','\\"') or "-" }}{% if interface.connected_endpoint and interface.connected_endpoint.device %} ({% if interface.connected_endpoint.device %}{{ interface.connected_endpoint.name|replace('"','\\"') }} @ {{ interface.connected_endpoint.device.name|replace('"','\\"') }}{% endif %}){% endif %}" |
|||
{%- endmacro %} |
|||
|
|||
{%- macro interface_addresses(interface, interface_context) %} |
|||
family inet { |
|||
{%- for address in interface|get_addresses %}{% if address|ipv4 %} |
|||
address {{ address.address }} |
|||
{%- endif %}{%- endfor %} |
|||
} |
|||
family inet6 { |
|||
{%- for address in interface|get_addresses %}{% if address|ipv6 %} |
|||
address {{ address.address }} |
|||
{%- endif %}{%- endfor %} |
|||
} |
|||
{%- endmacro %} |