/* 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;
|
|
}
|
|
}
|
|
}
|
|
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 {
|
|
device-count {{ lag_interfaces|length }};
|
|
}
|
|
}
|
|
fpc 0 {
|
|
pic 0 {
|
|
number-of-ports 0;
|
|
}
|
|
pic 1 {
|
|
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 {
|
|
|
|
{%- 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 }} {
|
|
{{ macros.interface_description(interface, interface_context) }}
|
|
gigether-options {
|
|
802.3ad {{ interface.lag.name }};
|
|
}
|
|
|
|
{%- 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 }} {
|
|
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 not interface.mode or ( 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 %}
|
|
fxp0 {
|
|
unit 0;
|
|
}
|
|
}
|
|
forwarding-options {
|
|
sampling {
|
|
input {
|
|
rate 10000;
|
|
run-length 0;
|
|
max-packets-per-second 50000;
|
|
}
|
|
}
|
|
load-balance {
|
|
per-flow {
|
|
hash-seed;
|
|
}
|
|
}
|
|
hash-key {
|
|
family inet {
|
|
layer-3;
|
|
layer-4;
|
|
symmetric-hash;
|
|
}
|
|
family inet6 {
|
|
layer-3;
|
|
layer-4;
|
|
}
|
|
family mpls {
|
|
label-1;
|
|
label-2;
|
|
label-3;
|
|
payload {
|
|
ether-pseudowire;
|
|
ip {
|
|
port-data;
|
|
}
|
|
}
|
|
}
|
|
family multiservice {
|
|
source-mac;
|
|
destination-mac;
|
|
payload {
|
|
ip {
|
|
layer-3;
|
|
layer-4;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
enhanced-hash-key {
|
|
family mpls {
|
|
ether-pseudowire zero-control-word;
|
|
}
|
|
}
|
|
}
|
|
routing-options {
|
|
static {
|
|
{%- for (route, route_data) in device.config_context.get('routes',{}).items() %}
|
|
route {{ route }} next-hop {{ route_data.get('next-hop', None) }};
|
|
{%- endfor %}
|
|
}
|
|
nonstop-routing;
|
|
}
|