Create README.md for Create_Fabric script
This commit is contained in:
61
utilities/Create_Fabric/README.md
Normal file
61
utilities/Create_Fabric/README.md
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
# Description
|
||||||
|
|
||||||
|
Here’s a high-level tour of the repository and how its pieces fit together:
|
||||||
|
|
||||||
|
## 1. Top-level scripts
|
||||||
|
- **main.py**
|
||||||
|
- Entry point for VXLAN-Fabric creation.
|
||||||
|
- Prompts for NetBox URL/token, number of buildings, and device-type slugs.
|
||||||
|
- Validates input, connects to NetBox, builds a `FabricConfig`, and invokes `VXLANFabricCreator.create_fabric()`.
|
||||||
|
- Logs out the new site, spines, leaves and access switches.
|
||||||
|
|
||||||
|
- **add_customers.py**
|
||||||
|
- Entry point for “customer” provisioning under an existing Fabric.
|
||||||
|
- Prompts for NetBox URL/token and customer details (name, VLAN/VNI, locations).
|
||||||
|
- Creates a tenant, assigns selected locations, allocates a /24 prefix, configures VLAN/L2VPN/VXLAN, and tags client interfaces on leaf switches.
|
||||||
|
|
||||||
|
## 2. Configuration & constants
|
||||||
|
- **config.py**
|
||||||
|
- Dataclasses and Enums defining:
|
||||||
|
- Interface types (QSFP, SFP, virtual…)
|
||||||
|
- Device roles (spine/leaf/access)
|
||||||
|
- IP-prefix roles (underlay, loopback)
|
||||||
|
- Default ASNs
|
||||||
|
- `FabricConfig` dataclass holds all parameters for fabric build.
|
||||||
|
|
||||||
|
## 3. Exceptions
|
||||||
|
- **exceptions.py**
|
||||||
|
- Custom exception hierarchy:
|
||||||
|
- `FabricError` base class
|
||||||
|
- `DeviceCreationError`, `IPAllocationError`, `CablingError` for granular error handling.
|
||||||
|
|
||||||
|
## 4. NetBox API backend
|
||||||
|
- **helpers/netbox_backend.py**
|
||||||
|
- `NetBoxBackend` wraps `pynetbox` and exposes:
|
||||||
|
- Tenant, Site, Device, VLAN, L2VPN, VXLAN-termination CRUD
|
||||||
|
- Interface management and cabling
|
||||||
|
- Prefix allocation and IP assignment
|
||||||
|
- Custom-fields saving and cleanup routines
|
||||||
|
- Uniform error-handler decorator logs errors and returns `None`.
|
||||||
|
|
||||||
|
## 5. Fabric-creator core
|
||||||
|
- **fabric_creator.py**
|
||||||
|
- `VXLANFabricCreator` orchestrates the fabric build:
|
||||||
|
1. `validate_prerequisites()`: Check roles, IP-roles, and device types exist in NetBox
|
||||||
|
2. `get_or_create_site()`: List or create a site
|
||||||
|
3. `create_spines()`: Always create two spine switches
|
||||||
|
4. `create_building_pair()`: For each building, create a leaf + access switch under a new Location
|
||||||
|
5. `setup_cabling()`: Cable leaf↔spines and leaf↔access ports
|
||||||
|
6. `setup_ip_addressing()`: Carve /31 underlay links and /32 loopbacks, assign to interfaces
|
||||||
|
7. `assign_asns()`: Stamp ASN custom-fields on spines and leaves
|
||||||
|
8. `create_fabric()`: Glue it all together, capture and return the site/devices created
|
||||||
|
|
||||||
|
## 6. How to use
|
||||||
|
- Ensure you have Python 3 and install `pynetbox`.
|
||||||
|
- Export or enter your NetBox URL and API token.
|
||||||
|
- Run `main.py` to spin up a new VXLAN fabric.
|
||||||
|
- Run `add_customers.py` to onboard new tenants into an existing fabric.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
This codebase gives you a higher-level, interactive automation layer atop NetBox, so you can script consistent VXLAN fabrics and customer provisioning without hand-crafting each object in the UI.
|
||||||
Reference in New Issue
Block a user