Has anyone successfully deployed Harvester using Metal3 (Bare Metal Operator) with configuration provided via cloud-init? It seems like Harvester supports only NoCloud and does not support ConfigDrive (which is supported by Metal3).
You are correct in your assessment. According to the official Harvester documentation, Harvester uses cloud-init with the NoCloud datasource for its installation/configuration mechanism (via the Elemental toolkit). ConfigDrive, which is the cloud-init datasource that Metal3 (Bare Metal Operator) uses to deliver configuration, is not officially supported by Harvester.
What Harvester supports for automated installation:
- PXE boot installation with a Harvester config file passed via
harvester.install.config_url -
- Cloud-init configuration through the NoCloud datasource
-
- Automated provisioning via the Harvester Install ISO with a YAML configuration file
- The Metal3 / ConfigDrive incompatibility:
- Metal3’s
BareMetalHostresource delivers configuration via ConfigDrive (an ISO attached as a virtual CD-ROM that the cloud-init agent reads). Since Harvester only supports NoCloud, Metal3’s native configuration delivery mechanism won’t work out of the box.
- Potential workarounds to explore:
-
- Use Metal3 for PXE booting the Harvester ISO, but provide the Harvester config file via HTTP URL (
harvester.install.config_url) instead of ConfigDrive. -
- Provision Harvester nodes through PXE boot, then import the cluster into Rancher.
- This appears to be a gap in the current Harvester feature set. If this is important to your use case, it would be worth opening a feature request on the Harvester GitHub repository.
- Use Metal3 for PXE booting the Harvester ISO, but provide the Harvester config file via HTTP URL (
- Reference: Official Harvester docs > Install > PXE Boot Install