Site provisioning
Experimental: the provisioner connector is optional. Most greenfield operators create clusters directly via FleetClusterJoin. Use this path when a site jumphost runs YAIDAP for metal/VM provisioning.
FleetSite.spec.provision binds an optional metal/VM provisioner (noop default, yaidap). The hub starts async connector actions; YAIDAP runs on the site jumphost using that site’s inventory path. On success the action returns a handoff host fragment (ansible_host, …) for enroll / add-worker.
Start with the YAIDAP operator guide (binding, inventory schema, checklist). Background: YAIDAP introduction, Inventory model, UMKIM integration. API details: fleet-site. Commands: umkim CLI.
Cluster intent files
Section titled “Cluster intent files”Optional cluster membership and intent use the native Ansible layout:
{cluster}.yml(inventory root) — group withhosts:listing member guest names.group_vars/{cluster}.yml— FleetClusterSpecfields (topology,autoApply,controlPlaneVip,haGroup,mode, …).
Field (in group_vars/{cluster}.yml) |
Purpose |
|---|---|
topology |
single_node or ha_3_node |
autoApply |
Reconciler creates FCJ when guests are Ready |
controlPlaneVip / haGroup |
HA enroll |
Inventory file layout and sync phases: Inventory model.
Inventory → cluster flow
Section titled “Inventory → cluster flow”- Edit
guests.yml,bare_metals.yml,hypervisors.yml,group_vars/all/all.yml,host_vars/{guest}.yml,{cluster}.yml, andgroup_vars/{cluster}.yml(console, CLI, or API). Libvirt guests live underguests.hosts; bare-metal cluster nodes under hub-onlybare_metals.yml; hypervisors underhypervisors.yml. umkim site inventory sync SITE --wait— push synced YAML to jumphost.umkim site host provision SITE guest01 --wait— YAIDAPcreate_vmreads the top-levelansible_hostline fromhost_vars/{guest}.yml. The hub marks guest status in_meta/status.json. After successful placement, the controller rewritesguests.ymlandhost_vars/{guest}.ymlfrom schedule tokens (least-utilized,auto, or empty) to the concrete hypervisor (fromYAIDAP_RESULT) and auto-syncs to the jumphost.- Reconciler cluster-apply — creates
FleetClusterJoinfrom cluster group files when members are Ready (umkim site host cluster-apply SITE guest01). - Download bootstrap bundle; run
bootstrap.shon first control (via jumphost). umkim cluster provision NAME— hub finalize (OCM, edge, providers).
VM hosts created through the connector use minRootDiskGi: 38 on the FCJ (40G vdisk root LV is smaller than 40 GiB after EFI/boot).
Provision actions, discovery, and TempXE flows: Provisioning workflows and UMKIM integration.
Console: add a VM guest
Section titled “Console: add a VM guest”Console is the fleet UI. On site homelab (jumphost linux@jump.otthol.hu:30200), open Provisioner inventory. The same clicks are shown in the console walkthrough.
Hypervisors in this lab: virt01 172.16.10.2, virt02 172.16.10.3, virt04 172.16.10.6. virt03 172.16.10.4 is bare metal (lab-single-0), not a libvirt guest. The Add VM guest form defaults are 2 CPU, 4096 MiB, and 40 GiB. This lab guest is docs-probe-vm on virt02 at 172.16.10.190.
- Add VM guest, step 1: Guest name, VM location (hypervisor name such as
virt02at172.16.10.3, orleast-utilized), and optional ansible_host / static IP on the lab LAN172.16.10.0/24. - Step 2: CPU cores, memory MiB, and boot disk GiB. Leave GPU passthrough unchecked unless the guest is a GPU passthrough VM on a prepared hypervisor (
virt04is172.16.10.6). - Save guest files writes
guests.ymlandhost_vars/{name}.yml. When a static IP was entered,host_varsincludes a top-levelansible_hostline.create_vmreads that line. The file also setsos: rocky-10,provisioning_provider: libvirt, andconfigure_firewalld: false. The generatedhost_varsfile uses MAC52:54:00:00:00:01unless you edit it. Change that address when another guest already uses it, then Save file. - Sync to jumphost and wait until Sync phase is
synced. - Hosts tab, Provision, Run provision. That starts YAIDAP
create_vm. A new guest does not need the confirm checkbox. Phase goes Declared, Provisioning, Ready. The libvirt domain is on the hypervisor named byvm_location. - Destroy VM removes the libvirt domain and keeps the guest in
guests.ymlandhost_vars. Confirm the checkbox before the destroy button.
Configure the connector
Section titled “Configure the connector”umkim site provision set SITE --provider yaidap \ --jumphost linux@jump.example:22 \ --ssh-secret fleet-site-SITE-provision-ssh \ --inventory /path/to/yaidap/inventory \ --yaidap-root /path/to/yaidapOptional: set yaidapRepo / yaidapRef on the site and run umkim site provision yaidap-sync SITE (or POST …/provision/yaidap/sync) so the hub clones or updates the YAIDAP checkout on the jumphost before provision actions.
Default provider is noop (caller supplies the SSH-ready host fragment via --ansible-host on provision run).
Related
Section titled “Related”- Cluster join — FCJ phases after bootstrap
- YAIDAP integration — connector binding, API, troubleshooting
- fleet-site — controller and post-Ready operations
- umkim CLI — inventory and provision commands
examples/site-profiles/— site exposure inventory examples