3 Commits

2 changed files with 132 additions and 34 deletions
Split View
  1. +131
    -33
      junos-v21-core-router.j2
  2. +1
    -1
      macros.j2

+ 131
- 33
junos-v21-core-router.j2

@ -74,11 +74,41 @@ system {
}
}
}
domain-name core.voneus.net;
domain-search [ core.voneus.net oob.core.voneus.net netops.voneus.net ];
time-zone Universal;
location country-code UK;
name-server {
9.9.9.9;
1.1.1.1;
8.8.8.8;
}
radius-server {
{% for radius_server, radius_data in device.config_context.get('radius-servers',{}).items() %}
{{ radius_server }} secret "{{ radius_data.get('secret') }}";{% endfor %}
}
accounting {
events login;
destination {
radius;
}
}
ntp {
server 185.134.196.169 prefer;
}
}
chassis {
maximum-ecmp 16;
redundancy {
routing-engine 0 master;
routing-engine 1 backup;
failover {
on-loss-of-keepalives;
on-re-to-fpc-stale;
on-disk-failure;
on-loss-of-vm-host-connection;
}
graceful-switchover;
}
aggregated-devices {
ethernet {
@ -90,9 +120,45 @@ chassis {
number-of-ports 0;
}
pic 1 {
pic-mode 100G;
port 0 {
speed 100g;
}
port 1 {
speed 100g;
}
port 2 {
speed 100g;
}
port 3 {
speed 100g;
}
port 4 {
speed 100g;
}
port 5 {
speed 100g;
}
port 6 {
speed 100g;
}
port 7 {
speed 100g;
}
port 8 {
speed 100g;
}
port 9 {
speed 100g;
}
port 10 {
speed 100g;
}
port 11 {
speed 40g; /* XXX temporary for testing lab */
}
}
}
network-services enhanced-ip;
}
interfaces {
@ -115,6 +181,7 @@ interfaces {
{% elif interface.lag %}
{{ interface.name }} {
{{ macros.interface_description(interface, interface_context) }}
gigether-options {
802.3ad {{ interface.lag.name }};
}
@ -122,6 +189,19 @@ interfaces {
{%- elif interface.name.startswith( 'lo' ) %}
{{ interface.name }} {
{{ macros.interface_description(interface, interface_context) }}
{%- 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 %}
{%- elif interface.type.value == 'lag' %}
{{ interface.name }} {
@ -137,7 +217,7 @@ interfaces {
{{ interface.name }} {
{{ macros.interface_description(interface) }}
{%- if interface.mode.value == 'access' %}
{%- if not interface.mode or ( interface.mode.value == 'access' ) %}
unit 0 {
{# interface_vrf(interface, interface_context) #}
{# interface_common(interface, interface_context) #}
@ -171,48 +251,66 @@ interfaces {
{%- endif %}
{%- endfor %}
{#
ae34 {
vlan-tagging;
aggregated-ether-options {
minimum-links 1;
link-speed 100g;
fxp0 {
unit 0;
}
}
forwarding-options {
sampling {
input {
rate 10000;
run-length 0;
max-packets-per-second 50000;
}
unit 34 {
vlan-id 34;
family inet {
address 193.162.44.13/31;
}
family inet6 {
address 2a10:f0c0::13/127;
}
}
load-balance {
per-flow {
hash-seed;
}
}
ae41 {
vlan-tagging;
aggregated-ether-options {
minimum-links 1;
link-speed 100g;
hash-key {
family inet {
layer-3;
layer-4;
symmetric-hash;
}
family inet6 {
layer-3;
layer-4;
}
unit 41 {
vlan-id 41;
family inet {
address 193.162.44.14/31;
family mpls {
label-1;
label-2;
label-3;
payload {
ether-pseudowire;
ip {
port-data;
}
}
family inet6 {
address 2a10:f0c0::14/127;
}
family multiservice {
source-mac;
destination-mac;
payload {
ip {
layer-3;
layer-4;
}
}
}
}
#}
fxp0 {
unit 0;
enhanced-hash-key {
family mpls {
ether-pseudowire zero-control-word;
}
}
}
routing-options {
static {
route 172.22.0.0/16 next-hop 172.22.4.1;
{%- for (route, route_data) in device.config_context.get('routes',{}).items() %}
route {{ route }} next-hop {{ route_data.get('next-hop', None) }};
{%- endfor %}
}
nonstop-routing;
}

+ 1
- 1
macros.j2

@ -1,5 +1,5 @@
{%- 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 %}"
description "{% if interface.label %}{{ interface.label|replace('"','\\"') or "-" }}: {% endif %}{{ interface.description|replace('"','\\"') or "-" }}{% if interface.connected_endpoint %} ({{ interface.connected_endpoint.name|replace('"','\\"')|replace('.voneus.net','') }}{% if interface.connected_endpoint.device.name %} @ {{ interface.connected_endpoint.device.name|replace('.voneus.net','')|replace('"','\\"') }}{% endif %}){% endif %}{% if interface.cable %} via [{{ interface.cable.label.split("/")[-1] }}]{% endif %}{% if interface.link_peer %} to [{{ interface.link_peer.label or interface.link_peer.name }}{% if interface.link_peer.device %} @ {{ interface.link_peer.device.name.split("/")[-1]|replace('"','\\"')|replace('.voneus.net','') }}]{% endif %}{% endif %}"
{%- endmacro %}
{%- macro interface_addresses(interface, interface_context) %}

Loading…
Cancel
Save