WilliamLam.com

  • About
    • About
    • Privacy
  • VMware Cloud
  • Tanzu
    • Application Modernization
    • Tanzu services
    • Tanzu Community Edition
    • Tanzu Kubernetes Grid
    • vSphere with Tanzu
  • Home Lab
  • Nested Virtualization
  • Apple
You are here: Home / Automation / How to create a customized ESXi ISO without vCenter Server?

How to create a customized ESXi ISO without vCenter Server?

02.01.2022 by William Lam // 16 Comments

Historically, if you needed to create a customized ESXi ISO that included additional ESXi drivers, your only supported option was to use the vSphere Image Builder service, which has a dependency on vCenter Server. If you have an existing vCenter Server, this was not a problem and you could easily create a customized ESXi ISO using either the vSphere UI (example here) or the CLI with PowerCLI (example here).

Where this becomes a real challenge is for a greenfield or brand new deployment, where the default ESXi ISO can not be used as it does not contain the required networking and/or storage drivers for the desired hardware platform. Although this affects some customers who use hardware from the VMware HCL but it definitely has a bigger impact on the VMware Homelab community or anyone just getting started for the very first time.

While discussing this topic with a colleague recently, I actually came to learn about an alternative solution for creating a customized ESXi ISO without the need of vCenter Server! Thanks to fellow team member Blair Fritz, who now works in the VMware Cloud Product Management team, for the awesome tip.

PowerCLI 12.0 was a major release with a TON of new functionality, but it it also included a couple of new cmdlets: New-IsoImage and New-PxeImage that allows users to create a custom ESXi ISO and Image without the need of vCenter Server. This was actually the first time I had heard about these cmdlets and I am guessing that this is probably going to be news for many of you as well.

The official VMware documentation does a pretty job explaining how the New-IsoImage cmdlet works, so I will not bore you with the details. One important thing to quickly mention is that these new cmdlets are included under the VMware.ImageBuilder module and unfortunately, that module has not been ported over to PowerCLI Core which also means you will need to use PowerShell on Windows to make use of these cmdlets. The other really cool thing about -Depot argument is that it can reference both a locally download ESXi Image Profile (zip) or it can actually point to VMware's Online repo located at https://hostupdate.vmware.com/software/VUM/PRODUCTION/main/vmw-depot-index.xml. Using this second option for the depot, I have found that it can take up to 30 seconds before it lists the version when using the Get-DepotBaseImages cmdlet to identify the version string that is required.


I know many folks in the community often create custom ESXi ISOs that include the popular USB Network Native Driver for ESXi, Community NVMe Driver for ESXi and Community Networking Driver for ESXi to name a few and I wanted to make it even easier for folks to get started.

Note: While testing the New-IsoImage cmdlet, I ran into an error when using the USB Network Native Driver for ESXi Fling and it looks like the driver was not created with specific metadata that the cmdlet is expecting. Hopefully we will be able to fix this in a future update of the Fling, but for now, you will need to use the Image Builder service if you need to incorporate USB Fling but for the Community Network and Storage Driver for ESXi, those work as expected.

To aide in this infrequent process, I have created a small PowerCLI script called create_custom_esxi_iso.ps1 which handles creating the required JSON software spec and the only thing users need to provide is the path to the ESXi Image Profile and a list of ESXi Offline Bundle Drivers paths. The script will check to ensure you are running PowerShell for Windows as PowerShell Core is NOT supported and also means you will need a Windows desktop to use this script.

Here is an example output of the script creating a new custom ESXi 7.0 Update 3c ISO that contains both the Community Network and Storage Driver for ESXi:

More from my site

  • PowerCLI 13.0 on Photon OS
  • Heads Up - Unable to open VIB archive in streaming mode using Export-EsxImageProfile with PowerCLI 13.0
  • Deploying NSX-T VIBs and/or creating custom NSX-T Image Profile
  • How to install ESXi 5.5 Patch03 on the new Mac Pro 6,1?
  • How to install PowerCLI 13.0 and use new Image Builder & Auto Deploy cmdlets on Apple Silicon?

Categories // Automation, ESXi, Home Lab, PowerCLI, vSphere Tags // image builder, New-IsoImage, PowerCLI

Comments

  1. Michael Ryom says

    02/01/2022 at 8:11 am

    Thanks for sharing William! But im not sure I get whats new/different from the VMware.ImageBuilder PowerCli commands that has been used for ages?

    Reply
    • William Lam says

      02/01/2022 at 9:18 am

      You should read the blog post again, if you didn’t pick up the difference 🙂

      Reply
      • Michael Ryom says

        02/01/2022 at 9:27 am

        Still dont see it. PowerCli/VMware.ImageBuilder module has no dependency on vCenter and you can add offline bundles, drivers and depots online/offline and it exports as bootable ISO. What am I missing?

        Reply
        • parambil says

          02/02/2022 at 10:12 am

          Agree with Michael. I have been creating custom ESXi ISO for many years now using image builder, which has no dependency to vCenter.

          Reply
  2. Shane Gibson says

    02/01/2022 at 8:13 am

    William - great posting - thank you. We deal with spinning ESXi ISOs all the time - and any improvements in the process are certainly welcome.

    Still incredibly heartbroken that someone thinks "Windows required" is a valid strategy. Highly automated environments include CI/CD toolchains that may spin ESXi ISOs and test the deployments ... which is awfully annoying / frustrating / hard to do with a Windows desktop requirement inserted in that toolchain.

    Here's to hoping that VMware one day in the next few decades modernizes this path ... primarily by jettisoning the 1990s era style requirement for spinning ISOs. Hello ... online software depots ... anyone?

    Seriously though - thank you!!

    Reply
    • Michael Rice says

      02/03/2022 at 11:38 am

      I couldnt agree more. Hopefully this cmdlet could get ported into core because at least then a docker solution could help to automate some of this.

      Reply
  3. Boner Alert (@bobbyw) says

    02/01/2022 at 9:43 am

    I've been using ESXi for years and even the PS Customizer script but I don't see any info in this article what spec.json is, why you would need it, or how you would make it. Could you elaborate?

    Reply
    • William Lam says

      02/01/2022 at 11:22 am

      The article doesn't cover the JSON details because I had linked to official docs. Its https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-83DB452B-669A-4270-8E0D-B902188376D3.html (which is referenced in the article). This is new in vSphere 7.0 and includes support for vSphere Lifecycle Manager (vLCM)

      PS Customizer (although a very awesome community tool, it is NOT officially supported by VMware) and as an employee, we definitely recommend using the official tools to ensure the best possible customer experience

      Reply
      • Boner Alert (@bobbyw) says

        02/01/2022 at 1:31 pm

        Thank you!

        Reply
  4. Steve Ballmer says

    02/01/2022 at 3:36 pm

    Where does it say you need vCenter to use Image Builder? It can be installed on standalone windows workstations with no vCenter anywhere in the environment.

    https://docs.vmware.com/en/VMware-vSphere/6.5/com.vmware.vsphere.install.doc/GUID-C84C5113-3111-4A27-9096-D61EED29EF45.html

    Reply
    • William Lam says

      02/01/2022 at 3:40 pm

      Steve - In the past (see the reference example when I had to create a custom ESXi ISO with NSX-T VIBS), I was not able to proceed without needing to first connect to vCenter Server (which is where the Image Builder service resides). I've also seen this from other users but interestingly, I see that both you and Michael mentioned that hasn't been your experience. I'm now wondering if this was an earlier limitation or constraint but I certainly ran into this over the years and hence the article.

      Aside from the dependency aspect, these cmdlets are the recommended ones going forward, especially if you wish to construct customized ESXi Image that can function with the new vSphere Lifecycle Manager (vLCM) feature

      Reply
      • Steve Ballmer says

        02/02/2022 at 3:04 pm

        Thanks for the reply William. Great site. Keep up the great work.

        Reply
  5. VirtuallyWired says

    02/01/2022 at 3:46 pm

    Thanks William, great post! I usually use the PowerCLI ImageBuilder cmdlets myself but, I recently posted on my blog how to do it via vCenter ImageBuilder.

    Reply
  6. Roy says

    02/21/2022 at 7:02 am

    I'm using DellEMC custom images, and I need to remove a driver VIB that is causing issues in our environment. So, for this new procedure: https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-83DB452B-669A-4270-8E0D-B902188376D3.html

    How can I specify a vib to REMOVE? The VIB is actually in the addon package.

    Reply
  7. Tom says

    05/24/2022 at 7:24 am

    Is there already a fix available for PowerCLI to recognize the custom NIC driver?

    Reply
  8. jeremycirca1980 says

    01/12/2023 at 2:54 pm

    I built a Docker Container that runs PowerCLI 13 with Image Builder support. I'm a Mac user and didn't always have access to a Windows machine to run PowerCLI with Image Builder so, when I saw PowerCLI 13 came out, I jumped for joy. Anyways, I get a lot of my information from William Lam and this website I wanted to share the link to the Container. I hope it helps someone out as much as it helps me out. https://hub.docker.com/r/jmcombs/vmware-powercli

    Reply

Thanks for the comment! Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Search

Author

William Lam is a Senior Staff Solution Architect working in the VMware Cloud team within the Cloud Infrastructure Business Group (CIBG) at VMware. He focuses on Cloud Native technologies, Automation, Integration and Operation for the VMware Cloud based Software Defined Datacenters (SDDC)

Connect

  • Email
  • GitHub
  • LinkedIn
  • RSS
  • Twitter
  • Vimeo

Recent

  • How to bootstrap ESXi compute only node and connect to vSAN HCI Mesh? 01/31/2023
  • Quick Tip - Easily move or copy VMs between two Free ESXi hosts? 01/30/2023
  • vSphere with Tanzu using Intel Arc GPU 01/26/2023
  • Quick Tip - Automating allowed and not allowed Datastores for use with vSphere Cluster Services (vCLS) 01/25/2023
  • ESXi with Intel Arc 750 / 770 GPU 01/24/2023

Advertisment

Privacy & Cookies: This site uses cookies. By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here: Cookie Policy

Copyright WilliamLam.com © 2023

 

Loading Comments...