When upgrading from vRA 8.18.1 to VCF Automation (VCFA) 9.1.x, the upgrade pre-check phase runs a set of source-system validation checks.
If the source system is a multi-node (HA) vRA 8.18.1 deployment and the cluster appliances do not all share the same root password, the script sync fails on the appliances whose password differs from the node that was imported into Fleet LCM.
The source validation pre-check then aborts and reports a misleading product-identification failure, even though the source system is in fact a supported product/version.
This is commonly seen when SDDC Manager manages the source appliances and intentionally keeps a different root password on each appliance.
Symptoms
The upgrade fails during the source validation pre-check (vcfa-precheck-upgrade-80-source). The reported pre-check error:
In the pre-check pod logs on the VCF services runtime control-plane node (kubectl -n prelude logs <vcfa-precheck-...-source-...>), the underlying failure is
an SSH script-sync error against one or more source cluster nodes, for example:
[INFO] Syncing scripts (checksum: <hash>) to 3 nodes: <ip-1> <ip-2> <ip-3>
[ERROR] Failed to create directory on <ip-2>: ... Permission denied, please try again.
[ERROR] Failed to create directory on <ip-3>: ... Permission denied, please try again.
[ERROR] Failed to sync scripts to 2 node(s). Successfully synced to 1 node(s).
[ERROR] SYSTEM ERROR: Failed to execute ... on source system (SSH/execution failure)
Only the node that was imported into Fleet LCM (whose credentials are in the upgrade payload) is synced successfully; the other appliances reject the SSH credentials with Permission denied.
The upgrade pre-check library discovers all source cluster node IP addresses (via kubectl get nodes) and attempts to SSH-sync the helper scripts to every node in parallel, using the single set of credentials supplied for the node that was imported into Fleet LCM.
The same ssh password is a requirement for the 9.x source systems, as they need to have all scripts on each node.
However, this is not the case for 8.x source systems.
When the appliances have different root passwords, only the imported node accepts those credentials. The sync to the remaining appliances fails with Permission denied, which causes the overall sync — and therefore the source product-identification pre-check — to fail.
Because the pre-check could not run its source script, it returns a generic "not a supported product/version" result, which does not reflect the true root cause (an SSH authentication failure to the other cluster nodes).
Resolution
A code fix will be included in VCF Automation 9.1.0 EP3. With the fix, the upgrade pre-check syncs the helper scripts only to the single source node that was imported into Fleet LCM, instead of to all discovered cluster nodes. This removes the dependency on every source appliance sharing the same root password.
Workaround