Skip to main content

ESXi installer image generator

This tool is really a collection of two parts. One part ISO to image generator and another part with the ability to parse the same metadata that cloud-init consumes to setup an image.

Why This Exists

VMware ESXi does not provide OS images that can be used in the cloud like some other OSes do. You are also unable to install ESXi and then image that disk and reuse it for a different machine. Due to these limitations, and with the kind suggestions from Jens Sandmann at SAP Converged Cloud, we've packaged the installer into an image which can be deployed like a cloud image onto a system. The installer is then configured to perform a non-interactive installation and reboot the machine giving the user a working VMware ESXi machine.

How It Works

VMware ESXi uses an installer based on RedHat's Anaconda installer, that they've called weasel. It can be programmatically driven using kickstart files which have slight differences from RedHat's kickstart files. This is what is used to perform a non-interactive installation. To facilitate the data that cloud-init would use to configure an OS image we must add some extra steps to the process. The installer allows for user supplied scripts that will run with either busybox ash or Python. They can run either before or after the installer or the first time the machine is booted if it was not configured with Secure Boot.

To make the installation work we've split the scripts up into two parts. The ones that run inside of the installer and the ones that run on the firstboot.

The installer based pieces involve setting the root password and getting our firstboot scripts and data copied over to the installed system so that our firstboot scripts can run.

The firstboot scripts involve configuring the hostname, configuring the network, enabling the console, enabling SSH and setting the SSH key.

The VMware ESXi installer uses a boot protocol called multiboot which involves loading multiple modules. Modules that are specifically crafted tar files are extracted into the installer OS and made available to it. We utilize this method to get our data and scripts into the environment.

To create the image we craft a whole disk image with a bootable partition. We then copy the contents of the ISO into this bootable partition and configure our tar file to be included as a module as well as reference a kickstart file which makes the installation non-interactive.

Usage

# using uvx
uvx esxi-img --output esxi.img path/to/esxi.iso

# using pip
python -m venv .venv
source .venv/bin/activate
pip install esxi-img
esxi-img --output esxi.img path/to/esxi.iso

ESXi Network Interfaces

ESXi has physical network interfaces and logical interfaces. The vmnicX interfaces are the physical interfaces and the vmkX interfaces are the logical interfaces, which are also known as VMkernel interfaces.

Diagram of ESXi interfaces

Release files for esxi-img 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for esxi-img 0.2.0
File Size Uploaded
esxi_img-0.2.0.tar.gz 784.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for esxi-img 0.2.0
File Interpreter ABI Platform
esxi_img-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 802.3 kB

Release files / esxi_img-0.2.0.tar.gz

Download URL esxi_img-0.2.0.tar.gz
Size 784.6 kB
Tags Source
SHA-256 checksum
How to use checksums
37caaeec2ab0c0c2d79ffd4f4328e3009bf4696332683e22d96f55728022fe31
BLAKE2b-256 checksum
How to use checksums
0626edfd6cd32d3aa7cd53e9f701a6a6626ad2e8a32d0e217c38498097da6c8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.

Transparency log

Release files / esxi_img-0.2.0-py3-none-any.whl

Download URL esxi_img-0.2.0-py3-none-any.whl
Size 17.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c125a1012751289070f97c9bf9e1f3e5838a1a71bcef89c0876c19563ac2f9c
BLAKE2b-256 checksum
How to use checksums
1a40a143f8aa6588ba5828189e21b01f35a865def5a85b0259072c927ac8a422
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 15, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page