| name | sunbeam-networking |
| description | Sunbeam/OpenStack lab networking knowledge for new joiners. Use when: explaining NICs, bonds, fabrics, VLANs, switches, routers, bridges; configuring MAAS interfaces for a new node; debugging missing Juju spaces; onboarding to the Sunbeam lab network; creating network diagrams or PPTs; understanding why a charm deployment fails due to network bindings. Covers: lab rack layout, management-fabric vs data-fabric, bondm/bondd/bond2/br-bond2 structure, VLAN IDs 3400-3409, Juju space to subnet mapping, step-by-step MAAS CLI commands. |
| argument-hint | concept to explain OR node to configure (e.g. 'explain VLANs', 'configure Node 5', 'why overlay space fails') |
Sunbeam Networking Skill
Resources
Quick Procedures
1 — Explain a Networking Concept
Read concepts.md. Answer analogy-first:
- Real-world analogy (door, pipe, lane, seat number)
- ASCII diagram
- Lab-specific example
- Rule/constraint
2 — Configure a New Node in MAAS
Read maas-ops.md + lab-layout.md:
- Discover interfaces:
maas admin interfaces read <system_id>
- Fix fabrics: move NICs to correct fabric before bonding
- Create
bondm → link oam + admin IPs
- Create
bondd → link all data VLANs
- Create
bond2 → br-bond2 → link internal + ceph-replica
- Verify all 9 Juju spaces have IPs
3 — Diagnose a Missing Juju Space
Read lab-layout.md — Juju Space → Subnet Mapping table:
- Identify the unbound space from the Juju error
- Find its VLAN/subnet in the table
- Check node:
maas admin interfaces read <system_id>
- If missing: create the VLAN interface and link the subnet
4 — Share Onboarding Deck
The deck is at docs/networking-basics.pptx (12 slides, navy/orange theme, speaker notes with pronunciation hints).
Upload to Google Drive → open in Google Slides → use Slideshow → Auto-play for voice-over.
5 — Verify a Node Matches Reference Layout
Run on the jump host:
/snap/bin/maas admin interfaces read <system_id> | python3 -c "
import json, sys
for i in json.load(sys.stdin):
ip = next((l['ip_address'] for l in i.get('links', []) if l.get('ip_address')), 'no-ip')
vlan = i.get('vlan', {})
print(f\"{i['id']:6} {i['name']:20} {i['type']:12} vid={vlan.get('vid','?'):5} {ip}\")
"
Compare output against the Expected Interface Layout in lab-layout.md.
Key Rules (Always Apply)
- NIC must be on the correct fabric before bonding
- Bond must exist before creating VLAN sub-interfaces
- VLAN must exist before linking a subnet/IP
- Bridge wraps the bond so VMs have an attachment point
- Every node needs all 9 interfaces with IPs — missing one = charm deploy fails
fabric + VLAN ID = unique network identity (same VLAN number on different fabrics = different network)