BGP Router Manager templates for Voneus core and aggregation infrastructure
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

334 lines
9.7 KiB

/* 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 faelix {
full-name "FAELIX NOC";
uid 2000;
class super-user;
authentication {
encrypted-password "$6$4sVD2r4y$PjAIeLZ/tJcDhsQekJI9wU2l4xYf8k6mHuzvLivK2tcFXdcHMjP23Up/oUzMRWiVtEW99foiEWuXG40tL5cHy0";
ssh-ed25519 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM05RD1X1njHcJvPTGbaCkO7rssp6T8uTCH3b6Sk4MA9 maz@lifting-shadows";
}
}
user voneus {
full-name "Voneus NOC";
uid 2001;
class super-user;
authentication {
encrypted-password "$6$4sVD2r4y$PjAIeLZ/tJcDhsQekJI9wU2l4xYf8k6mHuzvLivK2tcFXdcHMjP23Up/oUzMRWiVtEW99foiEWuXG40tL5cHy0";
ssh-ed25519 "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM05RD1X1njHcJvPTGbaCkO7rssp6T8uTCH3b6Sk4MA9 maz@lifting-shadows";
}
}
user nomios {
full-name "Nomios NOC";
uid 2002;
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;
}