, , ,

Using the VMware Cloud Foundation Bundle Transfer Utility

In my last blog post, I successfully demonstrated how to use PowerVCF and PowerShell to retrieve a VCF install/upgrade bundle directly from the online depot. However, the real challenge arises in environments where internet access is restricted or non-existent.

This scenario is where the VMware Cloud Foundation (VCF) Bundle Transfer Utility becomes invaluable, offering a solution for downloading and applying VCF bundles in air-gapped or disconnected settings.

After some hands-on experience with the VCF Bundle Transfer Utility, here are my overall thoughts and key takeaways:

  • User Interface: The tool isn’t the most intuitive. Its setup can be slightly daunting, requiring patience and precise configuration and attention to file paths.
  • Setup Process: Once you’ve configured a properly equipped jump box, following the documentation steps methodically does seem to work. However, the initial setup can really test your patience.
  • The official documentation did a decent job of walking through the steps but I think more detail could be provided.

A big thanks to vJonathan and Aaron Rombaut for their insightful posts on using the VCF Offline Bundle Tool. Their guidance was crucial in piecing together the steps I needed and enhancing my documentation process. Thank you! Please take a look at their blog posts for additional information.

I’ve aimed to provide a clear, practical summary of my experience, but I’m eager to hear your thoughts or additional tips. Feel free to leave any feedback in the comments below.

First off…note that the VCF Bundle Transfer Utility needs to be installed on both the Windows/Linux jump box and also on SDDC Manager appliance – more on that later. I started with making sure the jump box (Windows 11) was properly setup and had all the requirements.

Overall, here’s what’s needed:

  • VMware Cloud Foundation SDDC Manager 5.1 (or higher)
  • Windows 10 or higher machine/VM w/ internet connectivity
  • Broadcom Support Portal access and VCF entitlement (username/password)
  • Bundle Transfer Utility
  • Java 8 (or higher) 32-bit
  • 7-Zip
  • WinSCP
  • PuTTy (or some way to SSH)
  • OpenSSL installed and configured on the Windows jump box to upload the manifest file OR use the API Explorer to upload the new manifest file

1. Prep the jump box (Windows)

First, I went and download the Bundle Transfer Utility from the Broadcom Support Portal, under the Drivers & Tools tab. Username/password and entitlement will be needed. Download the ‘lcm-tools-prod.tar.gz‘ file.

Next, I installed Java – download from the link above, and install with the default settings. Make sure to download the 32-bit version.

Install WinSCP – download WinSCP from the link I posted above. Nothing special there, but I did need to configure WinSCP with advanced settings for keepalive/timeout of 30 seconds. Editing the Site, I selected “Connection” on the left, then changed the radio button to “Sending of null SSH packets”, and set the keepalive to 30 seconds.





As far as installing the Bundle Utility on the jump box, I used 7-Zip to unzip the ‘lcm-tools-prod.tar.gz‘, then simply copied the files to a folder on my desktop called “lcm-tools-prod”, and I will run the files from that location.

2. Download manifest file to the jump box

The next step is to download the manifest file to the local jump box – so that we know what bundles are available…and as explained here, the manifest file is a structured metadata file that contains information about the VMware product versions included in the release Bill of Materials.

Using PowerShell (as Admin) I navigated to the location of the LCM tools:

cd C:\Users\Administrator\Desktop\lcm-tools-prod\bin

Then I ran the utility using the following command, which will then download the manifest files to the jump box. Pay special attention to the location! More of that in Step 5.

./lcm-bundle-transfer-util --download --manifestDownload --depotUser [Username]


3. Download bundles to the jump box

With the jump box now prepared, I could then begin to download and stage the VCF bundle files to the jump box. In my case I simply created a new folder on the desktop called “VCF-Bundles”. Below is the command, plus the switches I used:

-–sv = current-vcf-version – I specified 5.1.1.0, which is my current VCF version
–-p = target-vcf-version – because I want to get the VCF 5.2.1.0 bundles

./lcm-bundle-transfer-util --download --outputDirectory C:\Users\Administrator\Desktop\VCF-Bundles --depotUser [Username] --sv 5.1.1.0 --p 5.2.1.0



I chose to download two bundles…bundle-13776 and bundle-120815. See how I used comma separated values below to just get the two bundles:

Whew…that step is complete…bundles are downloaded, and I can move to the next step.


4. Prep SDDC Manager with the Bundle Transfer Utility

Now I needed to prep the SDDC Manager with the Bundle Transfer tool.

I SSH’d into my SDDC Manager appliance (using the vcf user, then elevate to root), and created a folder mkdir /opt/vmware/vcf/lcm/lcm-tools

Then I used WinSCP to transfer the Bundle Tranfer Utility from the jump box to the /opt/vmware/vcf/lcm/lcm-tools location. I didn’t get a screen grab from this part, but it’s just moving of files 🙂

Then back in SSH in the SDDC Manager, I extracted the tar.gz to lcm-tools location:

tar -xvzf /opt/vmware/vcf/lcm-tools-prod.tar.gz -C /opt/vmware/vcf/lcm/lcm-tools/

cd /opt/vmware/vcf/lcm/

Then I set the permissions:

chown vcf_lcm:vcf -R

lcm-tools chmod 750 -R lcm-tools

5. Upload the manifest file to SDDC Manager

The following instructions are a little hazy..but here’s how I eventually did it – from step 2 above, find the where the location the LCM Manifest file (lcmManifest,json) is located…in the out put below when I ran the command in step 2, I found it was in the directory “C:\Users\Administrator\PROD2\evo\vmw\lcm\manifest\v1”

Use WinSCP to move that file over to the /home/vcf folder.

Now that the manifest file is copied over, I need to upload the file to the SDDC Manager using the Bundle Transfer Utility.

./lcm-bundle-transfer-util --update --sourceManifestDirectory /home/vcf --sddcMgrFqdn sddc-l-01a.corp.internal --sddcMgrUser administrator@vsphere.local

I ended up using the API Explorer to update the manifest file.

In SDDC Manager, I navigated to Developer Center, API Explorer – search for Manifests in the filter box on the right.

Manifests -> Post (search)

Open up the manifest file (found on the jump box) in notepad, copy/paste the contents into the Value text box found in the Try it out section

Click Execute

And I did see the response Status: 202, Accepted

6. Upload the offline bundles to SDDC Manager

Almost there! Used WinSCP and connected to the SDDC Manager. There I found the NFS share being used for the local bundle repository – it’s located in the directory:

/nfs/vmware/vcf/nfs-mount

Using WinSCP I created a folder for the bundles I am going to upload, I’ll called it “offline_bundles”…

Now, I’ll copy all the files I downloaded to the jump box (in step 3), which I located in “C:\Users\Administrator\Desktop\VCF-Bundles” over to the SDDC Manager in this new folder I just created “/nfs/vmware/vcf/nfs-mount/offline_bundles”

Using WinSCP, it’s a simple drag-n-drop

When that was complete, all the files were then on the SDDC Manager appliance

One thing I needed to do, is change the permissions on the folder and files I created and copied over to /nfs/vmware/vcf/nfs-mount/offline_bundles. So I SSH’d into the SDDC Manager and chmod 777 them – (need to be root to run this command)

7. Upload the bundle(s) to SDDC Manager

Finally, I can now import the files into SDDC Manager. Going back to the LCM tools at the location here

cd /opt/vmware/vcf/lcm/lcm-tools/bin

I’ll then run the utility and point it to the directory where I have my offline bundle(s), like this:

./lcm-bundle-transfer-util -upload -bundleDirectory /nfs/vmware/vcf/nfs-mount/offline_bundles

After some time and validation, both bundles uploaded…

Logging back into SDDC Manager I can see the upload bundle tasks in the panel

And checking in Lifecycle, I can see the top two bundles are indeed the bundles I downloaded and imported

From here, I can go ahead and apply the upgrade and the bundles are available for LCM to use, nice!

And that’s all for this one! If you learned something or I helped you out in some way, please make a comment and let me know. Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *