Harvester and 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 BareMetalHost resource 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:
    1. Use Metal3 for PXE booting the Harvester ISO, but provide the Harvester config file via HTTP URL (harvester.install.config_url) instead of ConfigDrive.
      1. Provision Harvester nodes through PXE boot, then import the cluster into Rancher.
    2. 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.
  • Reference: Official Harvester docs > Install > PXE Boot Install