This commit is contained in:
Sean C 2026-01-25 05:48:22 +00:00
commit 0a234463e6
18 changed files with 4127 additions and 0 deletions

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAx8q+VHbvuCU49KY4zyxKKu53KVy2x7gSsME85ER7V+lj2Bo2
Rs4IpPSLEpUAJDT9XwU6TQmri5/1DLT8f8NZySOYP5bW919xUxy5uQyKJnpfgMVE
4G0+npT+GPrmfvxoK4HktswabwgQGA64OexgUNgTPE6HoHEn3CyKDe2GwWiQDR59
4XrB1DMa/8zZi9Cb5N42p6qKGEQYnHtTvD1W6OSrJsKx7ndw7iW7cfrQvwE7tyIO
nPcIeN/H7gVuBJtbGD3yHVIoOxtJyNKc9w/UB5xHMINrPXqltUOqv17utaiF4Wi3
yaCmB2Vx5fYQvzCXcAUTxqM+jW03xONHqh5n5QIDAQABAoIBABNaJA1yZ83ibR3l
a+NFWvnFl20+OcYmokjUrt09dOUTCkTIZTF+i3/O4BmwrQ7UwyYND5SetysTF11f
uoV1mqDM/dZK+g+EAyoVwjeWa1tGxzFl6kIC0unxbJtm0iTCtiRgtJKwOm8+zLBH
3LhfmQS7qUFSKfj0fPPqrISk2USqfExCURtMJi4SfXvP2RiP2BeP53Lh6DSBAZhx
t7yTFT5Uel90OZ7LYy/wYUvuIo80oWQnlX2u7H3Sj6pj1+nW7lnA0jEdx0Dl/jHq
AoC9kT5lNWSB5XH4kKtCYUA0ehkqtR8ORLdic/+sT0Y6IB6TUzVv9whQERCOezoc
ljpdsAECgYEA12VqOANGmv8ZOWfLXFTHWCfPufnxAiT4DzsQ+MfXRVJvdSVMwGZI
M4uvF1yTA3canxwzcevFliZzT7w1uzi3C3ak3fLrFpzREjoTLDpHlmIWbf2eek5E
QB82CcW9ncVVryQwg0eJZwYPYHwwjXUyE01Eniqm//Xo3bKTmxiCMQECgYEA7XRN
TTkh3S9odRmlWBjVS9P2fdtSKvAu6oL+6kR01gHSQkSfW2Qr7wPKokvzjsyxMZ/k
tK0kxtGTH8IK98UAiGKPFGj+CmmnAdhMFiGZOCncKH6T4mv8YTzjBbCl5rrls1dL
u56tIOpq62ciVUmIXWP0YesQWk/p0zEhCqe2kuUCgYAWpseg1FdcfW89pjiwoQnF
r4oc2LgLra+YinGieAGffKfT/fQwV5FIOmxTXJzpRGE8Uk7msBC7VZfSzswnwDMf
tX5pCN7IJf2mmQzjHc3hdrc9IerEme57f8zDAlSKfvIf1QJ1C9TbTLvZPbYtaiG1
/e41Y+7kBAxVJC55pP4sAQKBgQDDsXS/rtUcz6Rb1X3x481th8t+H9FQ988CkGD7
ut07PhcFbD6U+DJI8iv+o2+fgUyLJEY9LPDBNhj1NFsLpXzx6aAXZwvukvIDUDos
hxYaNk1txhukn/BIRwCmQNYJGICT097jSjtOhEMHrGCcP1S1+tl+FVbNx0xiM/wS
JvQNjQKBgQCBowWOpSOekTGCj43AtbZpBLrWz5buDaQNVHUsF7nBBi25oS2K7XuX
91+uRgP87pC3HNNFDldtuqQ4Iiy7OmEM/yBAuI5dUvV5i3sybJwdQ9eAn15aM6Dt
vdVWHca39g1FDTP28uYYISwyQYIZnOZeogDZ6a9CMKuc4N8lyghUVA==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDhzCCAm+gAwIBAgICB+MwDQYJKoZIhvcNAQELBQAwVTELMAkGA1UEBhMCVVMx
CTAHBgNVBAcTADEVMBMGA1UEChMMY29udGFpbmVybGFiMQkwBwYDVQQLEwAxGTAX
BgNVBAMTEGxlYWZzcGluZSBsYWIgQ0EwHhcNMjYwMTI1MDUyNTU5WhcNMjcwMTI1
MDUyNTU5WjBVMQswCQYDVQQGEwJVUzEJMAcGA1UEBxMAMRUwEwYDVQQKEwxjb250
YWluZXJsYWIxCTAHBgNVBAsTADEZMBcGA1UEAxMQbGVhZnNwaW5lIGxhYiBDQTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMfKvlR277glOPSmOM8sSiru
dylctse4ErDBPOREe1fpY9gaNkbOCKT0ixKVACQ0/V8FOk0Jq4uf9Qy0/H/DWckj
mD+W1vdfcVMcubkMiiZ6X4DFROBtPp6U/hj65n78aCuB5LbMGm8IEBgOuDnsYFDY
EzxOh6BxJ9wsig3thsFokA0efeF6wdQzGv/M2YvQm+TeNqeqihhEGJx7U7w9Vujk
qybCse53cO4lu3H60L8BO7ciDpz3CHjfx+4FbgSbWxg98h1SKDsbScjSnPcP1Aec
RzCDaz16pbVDqr9e7rWoheFot8mgpgdlceX2EL8wl3AFE8ajPo1tN8TjR6oeZ+UC
AwEAAaNhMF8wDgYDVR0PAQH/BAQDAgKEMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggr
BgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBROI4T4KPb/8hgsjSl0
QF/ftgxXTjANBgkqhkiG9w0BAQsFAAOCAQEAr5pZvtm6tE+i++vdr9O2l5vQ4k4S
iukazyk8Mny95x1CI1p2jeRBFvTsF1/TjWTN21gRh6QppZfe3yTdaPSMwBl8iBQ2
11pgIWjpyyec/E32pUumstukNCg4ElPUQxDTTb6Eg3+GafsjdEVmDB2JBapsrXvD
sESqBFcAuLBq1Fgx/dYIAyvjZbcm6uaJj+YbkY++5ipseKYsRYHzZCXMahev3NCP
vs/gtmWck/jOOTDHQIU98PaFx/g302kN1/uMPPOxX3EV5XKzUNWPb0wJHIEeOY0P
K/Wkc5+fjgwzkhyO0crrY0EThJTzFlWbMnP/zo05js8tW7SJ47s4YzbG2Q==
-----END CERTIFICATE-----

View File

@ -0,0 +1,23 @@
all:
vars:
# The generated inventory is assumed to be used from the clab host.
# Hence no http proxy should be used. Therefore we make sure the http
# module does not attempt using any global http proxy.
ansible_httpapi_use_proxy: false
children:
juniper_vjunosrouter:
vars:
# ansible_connection: set ansible_connection variable if required
ansible_user: admin
ansible_password: admin@123
hosts:
clab-leafspine-junrtr1:
ansible_host: 172.20.20.6
clab-leafspine-junrtr2:
ansible_host: 172.20.20.4
clab-leafspine-junrtr3:
ansible_host: 172.20.20.3
clab-leafspine-junrtr4:
ansible_host: 172.20.20.5
clab-leafspine-junrtr5:
ansible_host: 172.20.20.2

View File

@ -0,0 +1,3 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmB3ueRuVyjFcDLY9dwDZP5vGJUWD6Y7WLd1Zb7j1xstodLyghmed9JsGnovy5WcEhW0nn72a1+A+6Ps6mQg4frG1ODYNMnIDes8bpr0rfrNUCRT8QCyX+bhhE1oJS8bSPiIGk/hhki898tZFs9PmgEl9JMT7xAB99Fs32v4QMKZBa4EyO0d7qt5E8IBp3pH1Y9BcKb1i9LXuSLKGN2FUvlKQLCpBQFpK8wtdt1eDrvBnr0fX9PRtGDa87afHYa87MQI3rmBpv6ZOIEnVa0GP11+JpldpP+RUKgIvbg6CSSVS+caJ6UTcPKe0gAg5dUHTKvgcSoImAKS53bBdcd57z
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCzeGL3ZSjXUDv4CSeFS9fEgzs6iAF1TgFmVsf9QPulYovbuVf4aot9V2LRJdW8m0NRExR2iNwmw8Lj55ux+9pKIAKwY5meWEcSfZnyUu+8tanRMH2fYke/6c8cQ9b8CMSA5czRtf2XGb2iPuEi1LgKNyLODY21Fn1Ogibm5F7ejM7wzDqHGwa5VZI1wm5CUiq1bWG3JN+OjyOnBMaL7sg/VbvaGIKkncrUfZBBxpCvhF5elxE+YGid3BpXVc+8B6/vv5w5vMZvE73IbftAl8eMDnPFdkCPOADKfAwRnRSE+ewjHvzyazwD5CnxX9a7zPmE3WiCiAGU2KB+ntjDPrxmQXjZf4DwrQddbvGK5oLC3wv8XDcU4wGAu6Ug8ja87UcKtNIphwKzAdHedE20hVufJ8CI9BA3DSmZqsAsQvDxnQzkp3Btd4ivuDT7804AFGdHSwsCf8FfX87vv1ocdHufNptoDQcjGLFEN2y/m6zvhJ27D6uVrpk7sxpYEOobVkk=
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPfW+kM6BqA0bYzHjw5pvWVXfNOU9xXwMoIs+78jzf7G

View File

@ -0,0 +1,52 @@
system {
host-name junrtr1;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr3 (Leaf 1)";
unit 0 {
family inet {
address 172.16.1.1/30;
}
}
}
ge-0/0/2 {
description "To junrtr4 (Leaf 2)";
unit 0 {
family inet {
address 172.16.1.5/30;
}
}
}
ge-0/0/3 {
description "To junrtr5 (Leaf 3)";
unit 0 {
family inet {
address 172.16.1.9/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.1/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

View File

@ -0,0 +1,52 @@
system {
host-name junrtr2;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr3 (Leaf 1)";
unit 0 {
family inet {
address 172.16.2.1/30;
}
}
}
ge-0/0/2 {
description "To junrtr4 (Leaf 2)";
unit 0 {
family inet {
address 172.16.2.5/30;
}
}
}
ge-0/0/3 {
description "To junrtr5 (Leaf 3)";
unit 0 {
family inet {
address 172.16.2.9/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.2/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

View File

@ -0,0 +1,44 @@
system {
host-name junrtr3;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr1 (Spine 1)";
unit 0 {
family inet {
address 172.16.1.2/30;
}
}
}
ge-0/0/2 {
description "To junrtr2 (Spine 2)";
unit 0 {
family inet {
address 172.16.2.2/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.3/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

View File

@ -0,0 +1,44 @@
system {
host-name junrtr4;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr1 (Spine 1)";
unit 0 {
family inet {
address 172.16.1.6/30;
}
}
}
ge-0/0/2 {
description "To junrtr2 (Spine 2)";
unit 0 {
family inet {
address 172.16.2.6/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.4/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

View File

@ -0,0 +1,87 @@
## Last commit: 2026-01-25 05:28:09 UTC by root
version 25.4R1.12;
system {
host-name junrtr5;
root-authentication {
encrypted-password "$6$BK0h.E5k$oUGgvQbLKTt6hdZRilMZF.fguzrlWNPQqoqc1wtG.7qf525ubn8dcwyzd7GrBNdZAMVSYH817pDGYnk8k4ZFj."; ## SECRET-DATA
}
login {
user admin {
uid 2000;
class super-user;
authentication {
encrypted-password "$6$HgRTbduS$nT0GwxflZkAp8OmeoldzS1XTOvKa6EKxc/JtIcFHA9BUFIiOrq6cgd31N97ieTk3bjGSbx5y9Oh8FVFSMtT5q0"; ## SECRET-DATA
}
}
}
services {
netconf {
ssh;
}
ssh {
root-login allow;
}
}
management-instance;
}
chassis {
fpc 0 {
pic 0 {
number-of-ports 56;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr1 (Spine 1)";
unit 0 {
family inet {
address 172.16.1.10/30;
}
}
}
ge-0/0/2 {
description "To junrtr2 (Spine 2)";
unit 0 {
family inet {
address 172.16.2.10/30;
}
}
}
fxp0 {
unit 0 {
family inet {
address 10.0.0.15/24;
}
family inet6 {
address 2001:db8::2/64;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.5/32;
}
}
}
}
routing-instances {
mgmt_junos {
routing-options {
rib mgmt_junos.inet6.0 {
static {
route ::/0 next-hop 2001:db8::1;
}
}
static {
route 0.0.0.0/0 next-hop 10.0.0.2;
}
}
}
}
protocols {
lldp {
interface all;
}
}

View File

@ -0,0 +1,26 @@
---
junrtr1:
username: admin
password: admin@123
platform: juniper_vjunosrouter
hostname: 172.20.20.6
junrtr2:
username: admin
password: admin@123
platform: juniper_vjunosrouter
hostname: 172.20.20.4
junrtr3:
username: admin
password: admin@123
platform: juniper_vjunosrouter
hostname: 172.20.20.3
junrtr4:
username: admin
password: admin@123
platform: juniper_vjunosrouter
hostname: 172.20.20.5
junrtr5:
username: admin
password: admin@123
platform: juniper_vjunosrouter
hostname: 172.20.20.2

File diff suppressed because it is too large Load Diff

52
configs/junrtr1.conf Normal file
View File

@ -0,0 +1,52 @@
system {
host-name junrtr1;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr3 (Leaf 1)";
unit 0 {
family inet {
address 172.16.1.1/30;
}
}
}
ge-0/0/2 {
description "To junrtr4 (Leaf 2)";
unit 0 {
family inet {
address 172.16.1.5/30;
}
}
}
ge-0/0/3 {
description "To junrtr5 (Leaf 3)";
unit 0 {
family inet {
address 172.16.1.9/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.1/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

52
configs/junrtr2.conf Normal file
View File

@ -0,0 +1,52 @@
system {
host-name junrtr2;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr3 (Leaf 1)";
unit 0 {
family inet {
address 172.16.2.1/30;
}
}
}
ge-0/0/2 {
description "To junrtr4 (Leaf 2)";
unit 0 {
family inet {
address 172.16.2.5/30;
}
}
}
ge-0/0/3 {
description "To junrtr5 (Leaf 3)";
unit 0 {
family inet {
address 172.16.2.9/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.2/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

44
configs/junrtr3.conf Normal file
View File

@ -0,0 +1,44 @@
system {
host-name junrtr3;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr1 (Spine 1)";
unit 0 {
family inet {
address 172.16.1.2/30;
}
}
}
ge-0/0/2 {
description "To junrtr2 (Spine 2)";
unit 0 {
family inet {
address 172.16.2.2/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.3/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

44
configs/junrtr4.conf Normal file
View File

@ -0,0 +1,44 @@
system {
host-name junrtr4;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr1 (Spine 1)";
unit 0 {
family inet {
address 172.16.1.6/30;
}
}
}
ge-0/0/2 {
description "To junrtr2 (Spine 2)";
unit 0 {
family inet {
address 172.16.2.6/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.4/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

44
configs/junrtr5.conf Normal file
View File

@ -0,0 +1,44 @@
system {
host-name junrtr5;
root-authentication {
plain-text-password-value "admin123";
}
services {
ssh {
root-login allow;
}
netconf {
ssh;
}
}
}
interfaces {
ge-0/0/1 {
description "To junrtr1 (Spine 1)";
unit 0 {
family inet {
address 172.16.1.10/30;
}
}
}
ge-0/0/2 {
description "To junrtr2 (Spine 2)";
unit 0 {
family inet {
address 172.16.2.10/30;
}
}
}
lo0 {
unit 0 {
family inet {
address 10.0.0.5/32;
}
}
}
}
protocols {
lldp {
interface all;
}
}

32
leafspine.clab.yml Normal file
View File

@ -0,0 +1,32 @@
name: leafspine
topology:
nodes:
junrtr1:
kind: juniper_vjunosrouter
image: vrnetlab/juniper_vjunos-switch:25.4R1.12
startup-config: configs/junrtr1.conf
junrtr2:
kind: juniper_vjunosrouter
image: vrnetlab/juniper_vjunos-switch:25.4R1.12
startup-config: configs/junrtr2.conf
junrtr3:
kind: juniper_vjunosrouter
image: vrnetlab/juniper_vjunos-switch:25.4R1.12
startup-config: configs/junrtr3.conf
junrtr4:
kind: juniper_vjunosrouter
image: vrnetlab/juniper_vjunos-switch:25.4R1.12
startup-config: configs/junrtr4.conf
junrtr5:
kind: juniper_vjunosrouter
image: vrnetlab/juniper_vjunos-switch:25.4R1.12
startup-config: configs/junrtr5.conf
links:
- endpoints: [ "junrtr1:ge-0/0/1", "junrtr3:ge-0/0/1" ]
- endpoints: [ "junrtr1:ge-0/0/2", "junrtr4:ge-0/0/1" ]
- endpoints: [ "junrtr1:ge-0/0/3", "junrtr5:ge-0/0/1" ]
- endpoints: [ "junrtr2:ge-0/0/1", "junrtr3:ge-0/0/2" ]
- endpoints: [ "junrtr2:ge-0/0/2", "junrtr4:ge-0/0/2" ]
- endpoints: [ "junrtr2:ge-0/0/3", "junrtr5:ge-0/0/2" ]

View File

@ -0,0 +1,56 @@
{
"freeTextAnnotations": [],
"freeShapeAnnotations": [],
"groupStyleAnnotations": [],
"networkNodeAnnotations": [],
"nodeAnnotations": [
{
"id": "junrtr1",
"position": {
"x": -35,
"y": 119
},
"icon": "pe",
"interfacePattern": "ge-0/0/{n}"
},
{
"id": "junrtr2",
"position": {
"x": 21,
"y": 119
},
"icon": "pe",
"interfacePattern": "ge-0/0/{n}"
},
{
"id": "junrtr3",
"position": {
"x": -77,
"y": 203
},
"icon": "pe",
"interfacePattern": "ge-0/0/{n}"
},
{
"id": "junrtr4",
"position": {
"x": -7,
"y": 203
},
"icon": "pe",
"interfacePattern": "ge-0/0/{n}"
},
{
"id": "junrtr5",
"position": {
"x": 63,
"y": 203
},
"icon": "pe",
"interfacePattern": "ge-0/0/{n}"
}
],
"edgeAnnotations": [],
"aliasEndpointAnnotations": [],
"viewerSettings": {}
}