How to update the compatibility sets on SDDC manually, so that an upgrade bundle can be marked as applicable and available. This would be need in the scenario where the expected upgrade for a component is not showing up when selecting the required VCF version.
For example, if we are upgrading the components of a WLD to 4.4.1, and the next expected component upgrade is NSX-T 3.1.3.7.4, but instead we are seeing a vCenter or a VxRail upgrade, and possibly even that is grayed out.
- Logs indicate the upgrade bundle is being marked as not applicable due to a compatibility set resulting in an invalid state / non-supported state.
Example of log entries:
... Update with bundle: <bundle_id> results in invalid state: true ... bundle application moves the Core SDDC Software State to non-supported state ... not applicable to any domain, moving it to pending bundle list
VMware Cloud Foundation 3.x
VMware Cloud Foundation 4.x
This is due to a missing or unexpected compatibility set combination of the various components involved, namely VCENTER, ESX_HOST and NSX_T_MANAGER / NSX_MANAGER.
Confirm if the upgrade of the individual component is compatible with the existing versions of the other components : https://interopmatrix.vmware.com/Interoperability
If the product versions are compatible, manually update the compatibilitySets, using the following procedure:
0. Take a snapshot of the SDDC Manager.
1. SSH to the SDDC manager with the vcf user, and then su root.
2.Verify that manifestPolling is set to false.
vi /opt/vmware/vcf/lcm/lcm-app/conf/application-prod.properties lcm.core.enableManifestPolling=false
3.Cycle the lcm service (Only needed if you changed the Manifest Polling value to false)
systemctl restart lcm
4. Copy the softwareCompatibilitySets.json to the upload location:
cp -p /nfs/vmware/vcf/nfs-mount/bundle/softwareCompatibilitySets.json /nfs/vmware/vcf/nfs-mount/bundle/depot/local/
5. Edit the softwareCompatibilitySets.json to add the required set:
vi /nfs/vmware/vcf/nfs-mount/bundle/depot/local/softwareCompatibilitySets.json
For example:
6. Update the ownership and permissions of the directory and its contents:
chmod -R 777 /nfs/vmware/vcf/nfs-mount/bundle/depot/local chown -R vcf_lcm:vcf /nfs/vmware/vcf/nfs-mount/bundle/depot/local
7. Use API to update the compatibilitySet using the edited JSON:
curl -X PUT http://localhost/lcm/bundle/upload/compatibilitySets -H "Content-Type: application/json"
8. Restart the LCM service:
systemctl restart lcm
9. The compatibiltySet should no longer cause a non-supported state.
Login to the SDDC Manager UI and check the updates tab for the required WLD.
10.After the upgrades complete you should change the manifestPolling back to true and cycle the lcm service for the change to take effect.
vi /opt/vmware/vcf/lcm/lcm-app/conf/application-prod.properties lcm.core.enableManifestPolling=true
https://docs.vmware.com/en/VMware-Cloud-Foundation/4.4/com.vmware.vcf.vxrail.doc/GUID-7925F6DD-2008-4CCA-87ED-0AA12BC56EE5.html
MINIMAL: We are going to make changes to the softwareCompatibilitySets.json and use a PUT API command to update the sets in the SDDC DB. A snapshot of the SDDC Manager is recommended, should we need to revert to a state prior to making these changes.