add UML, fix structure

This commit is contained in:
2025-11-23 17:37:45 +03:00
parent 75c30afb31
commit 3782217438
10 changed files with 846 additions and 8 deletions
+160
View File
@@ -0,0 +1,160 @@
# yaml-language-server: $schema=./topology-schema.json
schema: asvk.topology/1.0
meta:
id: "string"
title: "string"
description: "string"
provider:
name: virtualbox # virtualbox | kvm | container
defaults:
cpu: 1
ram_mb: 512
disk_gb: 8
os_image: "debian-12-cloud.qcow2"
nic_model: virtio
defaults:
routing:
stack: bird # bird | frr | linux
protocols_enabled: []
switch:
impl: linux-bridge # linux-bridge | ovs
firewall:
impl: nftables # nftables | none
mgmt:
ssh_user: "lab"
ssh_key: "~/.ssh/id_rsa.pub"
variables: # for templates
asn: 65000
domain: "lab.local"
networks: # L2 / L3 / VLAN trunks
- id: lan1
type: l2 # l2 | l3
mtu: 1500
- id: lan13
type: l2
- id: trunk1
type: l2
vlan:
mode: trunk
allowed: [4, 8]
- id: mgmt
type: l3
cidr: 192.168.100.0/24
dhcp: false
nodes: # nodes (VM/containers)
- name: R1
role: router # router | switch | host
resources:
cpu: 1
ram_mb: 512
mgmt:
ip: 192.168.100.11/24
gw: 192.168.100.1
net: mgmt
interfaces: # order matters: eth1 ↔ adapter2 and so on
- name: eth1
network: lan13
addresses: ["10.0.13.1/24"]
- name: eth0 # MGMT
network: mgmt
routing:
stack: bird # inherited from defaults, can be omitted
protocols:
static:
routes:
- to: 0.0.0.0/0
via: 10.0.13.3
ospf: # if needed
enabled: false
rip:
enabled: false
services: # servers/daemons of the host
- name: sshd
enabled: true
switching: # L2 config for switch nodes
- node: S1
impl: linux-bridge # linux-bridge | ovs
bridges:
- name: br0
ports:
- if: eth1 # to trunk1
vlan:
mode: trunk
allowed: [4, 8]
- if: eth2 # access → VLAN 4
vlan:
mode: access
vid: 4
- if: eth3 # access → VLAN 8
vlan:
mode: access
vid: 8
svis: # VLAN management interfaces (SVI)
- vid: 4
ifname: br0.4
addresses: ["10.0.4.254/24"]
firewall: # High-level ACL-> to nftables
- node: R2
rules:
- id: allow-ospf
match:
in_if: eth1
ip_proto: ospf
action: accept
- id: telnet-from-R1-to-S1
match:
src: 10.0.13.1/32
dst: 10.0.4.254/32
l4: { proto: tcp, dport: 23 }
action: accept
- id: ftp-from-R3-to-S2
match:
src: 10.0.13.3/32
dst: 10.0.6.254/32
l4: { proto: tcp, dports: [20, 21] }
action: accept
- id: drop-rest
action: drop
profiles: # overlays - patches on top of the base description
- name: "all-frr"
description: "Switch all control-plane to FRR"
patches:
- op: replace
path: /defaults/routing/stack
value: frr
- name: "mix-bird-frr-ospf"
description: "BIRD by default, but OSPF on R2 via FRR"
patches:
- op: add
path: /nodes
where:
name: R2
patch:
routing:
protocols:
ospf:
enabled: true
impl: frr
- name: "switch-ovs"
patches:
- op: replace
path: /defaults/switch/impl
value: ovs
tests: # tests (expected result)
- name: ping-R1-to-R3
from: R1
to: 10.0.13.3
expect: success
- name: ping-VLAN-4-R1-to-R3
from: R1
to: 10.0.4.1
expect: success