Package: pulumiverse-esxi-native
Pulumi Native ESXi ProviderThis repository crates a VMWare ESXi provider to provision VMs directly on an ESXi hypervisor without a need for vCenter or vSphere.The repository is created based on the Terraform Providerterraform-provider-esxi.
Thanks to the wonderful work done there by@josenk, I was able to build this provider for Pulumi users.IMPORTANT NOTES!Note for Pull Requests (PRs): When creating a pull request, please do it onto theMAIN branchwhich is
the consolidated work-in-progress branch. Do not request it onto another branch.PLEASERead ourbranch guideto know about our branching policyCONTRIBUTINGIMPORTANT:The contribution details are statedhereRequirementsThe VMwareovftoolis required to be installed in the workstation where pulumi will be executed.NOTE:ovftoolinstaller for windows doesn't put ovftool.exe in your path.
You will need to manually set your path.You MUST enable ssh access on your ESXi hypervisor.Google 'How to enable ssh access on esxi'In general, you should know how to use terraform, esxi and some networking...You will most likely need a DHCP server on your primary network if you are deploying VMs with public OVF/OVA/VMX images.  (Sources that have unconfigured primary interfaces.)The source OVF/OVA/VMX images must have open-vm-tools or vmware-tools installed to properly import an IPAddress.  (you need this to run provisioners)Features and CompatibilitySource image can be a clone of a VM or local vmx, ovf, ova file. This provider uses ovftool, so there should be a wide compatibility.Supports adding your VM to Resource Pools to partition CPU and memory usage from other VMs on your ESXi host.Pulumi will Create, Destroy, Update & Import Resource Pools.Pulumi will Create, Destroy, Update & Import Virtual Machines.Pulumi will Create, Destroy, Update & Import Virtual Disks.Pulumi will Create, Destroy, Update & Import Virtual Switches.Pulumi will Create, Destroy, Update & Import Port Groups.Why this provider?If you do not have a vCenter or vSphere, especially if you are running a home lab, these services are expensive, and maybe you cannot have them, but the ESXi is free, so that is the reason behind it!How to installThe Pulumi ESXi Native provider is available as a package in all Pulumi languages:JavaScript/TypeScript:@pulumiverse/esxi-nativePython:pulumiverse_esxi_nativeGo:github.com/pulumiverse/pulumi-esxi-native/sdk/go/esxi.NET:Pulumiverse.EsxiNativeProvider BinaryThe ESXi Native provider binary is a third party binary. It can be installed using thepulumi plugincommand.pulumiplugininstallresourceesxi-native<version>--servergithub://api.github.com/pulumiverseReplace the<version>string with your desired version.How to use and configureIn order to use the provider, we need to provide SSH credentials to the ESXi HostSet configuration usingpulumi configRemember to pass--secretwhen settingpasswordso that it is properly encrypted:$pulumiconfigsetesxi-native:username<username>
$pulumiconfigsetesxi-native:password<password>--secret
$pulumiconfigsetesxi-native:host<hostIPorFQDN>Set configuration using environment variablesFor bash users$exportESXI_USERNAME=<YOUR_ESXI_USERNAME>
$exportESXI_PASSWORD=<YOUR_ESXI_PASSWORD>
$exportESXI_HOST=<YOUR_ESXI_HOST_IP>For powershell users>$env:ESXI_USERNAME="<YOUR_ESXI_USERNAME>">$env:ESXI_PASSWORD="<YOUR_ESXI_PASSWORD>">$env:ESXI_HOST="<YOUR_ESXI_HOST>"Getting started exampleimport*asesxifrom"@pulumiverse/esxi-native";export=async()=>{constvm=newesxi.VirtualMachine("vm-test",{diskStore:"nvme-ssd-datastore",networkInterfaces:[{virtualNetwork:"default"}]});return{"id":vm.id,"name":vm.name,"os":vm.os,};}Known issues with vmware_esxiUsing a local source vmx files should not have any networks configured. There is very limited network interface mapping abilities in packer for vmx files.It's best to simply clean out all network information from your vmx file. The plugin will add network configuration to the destination vm guest as required.pulumi import cannot import the guest disk type (thick, thin, etc.) if the VM is powered on and cannot import the guestipAddressif it's powered off.OnlynumVCpusare supported,numCoresis not.Doesn't support CD-ROM or floppy.Doesn't support Shared bus Interfaces, or Shared disks.Using an incorrect password could lockout your account using default esxi pam settings.Don't setstartupTimeoutorshutdownTimeoutto 0 (zero). It's valid, however it will be changed to default values.