post_upgrade_inventory_sync task with specific reference codes (e.g., BD974893).Step vmsp_upgrade failed.vcenter-role-sync step fails and exits.Failed to obtain SDDC Manager token for 'https://<SDDC_FQDN>'. Cause: (empty).sddc-build-service logs show repeated authentication failures:Failed to connect to https://<vCenterFQDN>:443/sdk as svc-vcf-sddc-lcm-VCENTER-###@vsphere.local caused by vim.fault.InvalidLogin: Cannot complete login due to an incorrect user name or password.commonsvcs logs display PERMISSION_NOT_FOUND followed by a SOAP fault.CLIENT_IP_BLOCKED (403) on the runtime nodes.VMware Cloud Foundation (VCF)
VMware vSphere Foundation (VVF)
VMware Aria Automation
The issue arises from different credential management patterns across deployment types:
VVF: SDDC-LCM is configured with [email protected] credentials instead of dedicated service accounts, preventing normal rotation workflows from functioning correctly. If the administrator password is rotated out-of-band, the stored credentials become invalid.
VCF: Multiple service account rotations (scheduled or on-demand) delete the account (e.g., svc-vcf-sddc-lcm-SDDC_MANAGER-##### or svc-vcf-sddc-lcm-VCENTER-#####) from SDDC Manager or vCenter. This breaks the connection between SDDC-LCM and the target service, leaving the stored credentials stale and potentially causing IP lockouts.
The recovery tooling is split into two dedicated scripts, one per target service. Each script creates a new service account that replaces the stored credentials in SDDC-LCM. Both handle the following use cases:
The scripts do not handle the repair of a corrupted administrator account. Instead, as part of a validation step, each script validates the passed administrator credentials. If the credentials are invalid, an error message indicates this.
CommonUtils.sh - Supporting functions called by other scripts. Ensure this is in the same working directory as the Reestablish scripts below.ReestablishVCServiceAccount.sh - Creates a vCenter service account with global Administrator permissions.ReestablishSddcManagerServiceAccount.sh - Creates an SDDC Manager service account with Admin role permissions.ReestablishVCServiceAccount.sh Workflowvcf-iam-vcenter-admin with updated service account username and passwordReestablishSddcManagerServiceAccount.sh Workflowvcf-iam-sddc-manager-admin with updated service account username and passwordReestablishVCServiceAccount.sh Parameters--vcenter-fqdn: Fully Qualified Domain Name of the vCenter Server. Required to establish a connection to vCenter for service account creation, permission assignment, SSL certificate extraction, and configuration validation. All vCenter operations depend on this endpoint.--vcenter-admin-username: Administrator username for vCenter authentication. Required to authenticate with vCenter for creating new service accounts and assigning global Administrator permissions. Must have sufficient privileges to create users and modify permissions.ReestablishSddcManagerServiceAccount.sh Parameters--sddc-manager-fqdn: Fully Qualified Domain Name of the SDDC Manager. Required to establish a connection to SDDC Manager for service account creation, role assignment, SSL certificate extraction, and configuration validation. All SDDC Manager operations depend on this endpoint.--sddc-manager-username: Administrator username for SDDC Manager authentication. Required to authenticate with SDDC Manager for creating new service accounts and assigning Admin role permissions. Must have sufficient privileges to create service accounts.This script creates new dedicated service accounts to replace stored administrator credentials, supporting both vCenter and SDDC Manager recovery scripts.
root from a VMSP control plane node.curl, openssl, jq, awk, base64, kubectlDownload all the scripts attached to this article:
Steps to SSH to the VMSP control plane node:
Build > Lifecycle > Components tab.VCF Services Runtime link.vmware-system-user.sudo su -
export KUBECONFIG=/etc/kubernetes/admin.confEnsure kubectl is working and connected to the Control Plane node:
kubectl get nodes -o wideCreate a directory and download the appropriate raw .sh files attached to this article (including CommonUtils.sh):
mkdir recovery_scripts
cd recovery_scriptsMake the scripts executable:
chmod +x *.shRun the recovery script for your specific use case. If /tmp on the runtime nodes is mounted as noexec, bypass it by invoking bash directly:
For vCenter:
bash ./ReestablishVCServiceAccount.sh \
--vcenter-fqdn '<VCENTER_FQDN>' \
--vcenter-admin-username '[email protected]'For SDDC Manager:
bash ./ReestablishSddcManagerServiceAccount.sh \
--sddc-manager-fqdn '<SDDC_MANAGER_FQDN>' \
--sddc-manager-username '[email protected]'Restart the SDDC-LCM deployments to ensure they read the newly patched Kubernetes secrets:
kubectl rollout restart deployment vcf-sddc-build-service-sddcbuild -n vcf-sddc-lcm
kubectl rollout restart deployment vcf-sddc-upgrade-service-sddcupgrade -n vcf-sddc-lcmIf you experienced IP lockouts, restart commonsvcs on SDDC Manager to clear the in-memory blocks:
systemctl restart commonsvcs