YAIDAP
Experimental: YAIDAP is a sibling repository, not vendored into UMKIM. Validate on your hardware before production use.
YAIDAP (Yet Another Inventory-Driven Ansible Provisioner) is inventory-defined host provisioning: multi-NIC bridges and VLANs, optional bonding, firewalld, temporary PXE (TempXE), and VM create/destroy (libvirt-first, Proxmox optional).
Canonical source: github.com/rborso/yaidap.
L0 vs L1 split
Section titled “L0 vs L1 split”┌─────────────────────────────────────────────────────────────┐│ UMKIM hub (L1: OS → fleet) ││ FleetClusterJoin · OCM · Harbor · FleetApp · fleet-edge │└───────────────────────────┬─────────────────────────────────┘ │ SSH-ready handoff ▼┌─────────────────────────────────────────────────────────────┐│ YAIDAP (L0: iron → OS) ││ TempXE / PXE · libvirt · hypervisor prepare · guest VMs │└─────────────────────────────────────────────────────────────┘YAIDAP provisions bare metal and hypervisor guests until they are SSH-ready. UMKIM takes over at that point with cluster enroll, bootstrap, and fleet operations. Kubernetes, OCM, Harbor, and FleetApp are out of scope for YAIDAP.
When a site does not need metal/VM provisioning, leave FleetSite.spec.provision.provider at noop and supply SSH-ready hosts directly via FleetClusterJoin.
What YAIDAP provisions
Section titled “What YAIDAP provisions”| Capability | Notes |
|---|---|
| Bare metal OS install | TempXE PXE kickstart (Rocky, Proxmox) |
| Hypervisor prepare | Bridges, bonds, libvirt pools, Proxmox pvesm, firewalld |
| VM create/destroy | libvirt cloud-init (default) or Proxmox |
| Hardware discovery | SSH (discover-hosts.yml) or PXE/TempXE collector |
| GPU passthrough | VFIO host prep + guest attach |
| OpenWrt gateway | Virtualized ZTP + optional DynDNS/reverse proxy |
Install prerequisites
Section titled “Install prerequisites”On the site jumphost (or any Ansible controller running YAIDAP directly):
ansible-galaxy collection install -r requirements.ymlpip install -r python_requirements.txtCopy inventory/example/ and replace IPs, MACs, and keys before real use. The inventory/demo/ tree is a fictional reference lab for walkthroughs.
Playbook and role layout
Section titled “Playbook and role layout”playbooks/ tag-driven entrypoints (always use --tags)roles/ configure-common Uplink normalization, discovery, firewalld configure-hypervisor Bridges, bonds, libvirt pools, Proxmox pvesm configure-provisioning VM create/destroy, placement scheduling configure-tempxe TempXE PXE container, kickstart, discovery collector configure-router OpenWrt DynDNS, reverse proxy, ACMEinventory/example/ sanitized starter inventory (schema contract)| Playbook | Tags | Purpose |
|---|---|---|
discover-hosts.yml |
check_host_details |
SSH hardware draft → generated/host_vars/ |
configure-tempxe.yml |
configure_tempxe, tempxe_start/stop, collect_discovery |
PXE arm/disarm, BM install, PXE discovery |
configure-hypervisors.yml |
prepare, prepare_gpu_passthrough |
HV bridges, storage pools |
plan-vm-placement.yml |
plan |
Dry-run vm_location: least-utilized scheduling |
provision-vms.yml |
create, destroy |
Guest VM lifecycle |
validate-all.yml |
validate |
Schema check (no remote changes) |
validate-integration.yml |
validate_integration |
Structured validate JSON for hub/console (yaidap_emit_result) |
install-bare-metal.yml |
install_bm |
TempXE bare-metal OS install (UMKIM install_bm) |
discover-pxe.yml |
discover_pxe |
TempXE PXE hardware discovery (UMKIM discover_pxe) |
configure-routers.yml |
configure_router |
OpenWrt DynDNS, nginx reverse proxy, ACME |
Hub connector jobs map provision actions to these playbooks and parse YAIDAP_RESULT (schema: yaidap.integration.v1) from job logs. See Playbook and tag map and UMKIM integration.
noop vs yaidap provider
Section titled “noop vs yaidap provider”| Provider | When to use |
|---|---|
noop (default) |
Greenfield operators create clusters directly via FleetClusterJoin; hosts are already SSH-ready |
yaidap |
Site jumphost runs YAIDAP; hub stores native Ansible inventory, syncs to jumphost, and dispatches provision actions as async Jobs |
Binding a YAIDAP site is documented in UMKIM integration. The operator runbook for inventory → cluster is Site provisioning.
See also
Section titled “See also”- Operator guide — site binding, secrets, hub inventory setup, configuration checklist
- Inventory model —
networks,uplinks,storages, inventory tree - UMKIM integration — connector binding, API, console, troubleshooting
- Provisioning workflows — discover → prepare → create (standalone and hub-orchestrated)
- fleet-site — FleetSite controller and post-Ready operations