Install the VM image
Deploy HAProxy Enterprise as a VM in VMware vSphere
In this guide, you’ll learn how to install HAProxy Enterprise as a virtual machine in VMware vSphere. The virtual machine is packaged as an Open Virtualization Appliance (OVA), which is a compressed archive that contains the files that define the template for deploying the virtual machine.
Get and verify the OVA Jump to heading
You can import the OVA directly from a URL into your vSphere client, or download the OVA locally to first verify its checksum before uploading it to your vSphere client.
To import the .ova file directly into vSphere Client:
-
Go to the following URL. Replace
<HAPROXY ENTERPRISE KEY>with your HAProxy Enterprise license key.texthttps://www.haproxy.com/download/hapee/key/<HAPROXY ENTERPRISE KEY>-vmwaretexthttps://www.haproxy.com/download/hapee/key/<HAPROXY ENTERPRISE KEY>-vmware -
Find the
.ovafile of the version of HAProxy Enterprise you want to install. Each.ovafile installs a different version of HAProxy Enterprise on Ubuntu or Red Hat Enterprise Linux. Right-click the file and select Copy link. -
In vSphere Client, select the action Deploy OVF Template.
-
Select URL to enter a URL from which to import the
.ovafile. Paste the link you copied. Click Next. -
Use the wizard to customize the virtual machine’s name, compute resource, storage, and network.
-
On the Customize template screen, you can customize the virtual machine’s properties for your specific use case.
Property Description Encoded user-data Base64-encoded cloud-init user-data. See Set cloud-init user-data. SSH public keys An SSH public key for connecting to the instance. This populates the default user’s authorized_keysfile. For example,ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICjt... My PC.Default user’s password If set, the default user’s password will have this value to allow password-based login via the hypervisor console. The password will be good for only a single login. If set to RANDOM, then a random password will be generated and written to the console.A unique instance ID Required. The instance’s unique identifier. It determines whether the machine should take first boot actions. For example, loadbalancer1.Hostname Sets the instance’s hostname, such as loadbalancer1.URL to seed instance data from Indicates that the instance should seed cloud-init user-data and meta-data from the given URL. For example, if set to http://example.com/test-, meta-data will be pulled fromhttp://example.com/test-meta-dataand user-data fromhttp://example.com/test-user-data.Encoded network-config Base64-encoded cloud-init network-config. See Set cloud-init network-config. -
Start the VM.
-
Log in to the console with the username
ubuntu(Ubuntu) orcloud-user(Red Hat Enterprise Linux) and the password you set or the one randomly generated during the installation. -
Verify that the network interface driver is the
VMXNET3driver; we recommend it for its superior performance.The OVA image is already configured to use the
VMXNET3network interface driver, but if you add more interfaces, the hypervisor may provide a different driver as the default. Make sure you specify theVMXNET3interface driver instead. In particular, avoid theE1000driver, which isn’t optimized for use in a hypervisor.
To download the .ova file to your local file system:
-
Go to the following URL. Replace
<HAPROXY ENTERPRISE KEY>with your HAProxy Enterprise license key.texthttps://www.haproxy.com/download/hapee/key/<HAPROXY ENTERPRISE KEY>-vmwaretexthttps://www.haproxy.com/download/hapee/key/<HAPROXY ENTERPRISE KEY>-vmware -
Click to download the
.ovafile of the version of HAProxy Enterprise you want to install. Each.ovafile installs a different version of HAProxy Enterprise on Ubuntu or Red Hat Enterprise Linux. -
Optional: Verify the integrity of the
.ovafile by comparing checksums.-
Download the
SHA256SUMSfile. It contains checksums for the.ovafiles. Inside you’ll find two columns, where the left column is a checksum and the right column is the.ovafile it corresponds to.SHA256SUMStextae43142589b3ee... hapee-rhel-8-amd64-2.6r1-20250121.ova06ca84c7da61bf... hapee-rhel-9-amd64-2.8r1-20250121.ovaf01a2a6263ebfe... hapee-rhel-9-amd64-2.9r1-20250121.ova...SHA256SUMStextae43142589b3ee... hapee-rhel-8-amd64-2.6r1-20250121.ova06ca84c7da61bf... hapee-rhel-9-amd64-2.8r1-20250121.ovaf01a2a6263ebfe... hapee-rhel-9-amd64-2.9r1-20250121.ova... -
Generate the checksum for the
.ovafile you downloaded so that you can compare it to the value from theSHA256SUMSfile.Linux: Use the command
shasumto get the checksum of the.ovafile. For example:nixshasum -a 256 hapee-rhel-9-amd64-3.0r1-20250121.ovanixshasum -a 256 hapee-rhel-9-amd64-3.0r1-20250121.ovaoutputtexteac5f1f35a386dec73c0bef8769848014f76d0cf7688a651538c1d89cc3e4e4b hapee-rhel-9-amd64-3. 0r1-20250121.ovaoutputtexteac5f1f35a386dec73c0bef8769848014f76d0cf7688a651538c1d89cc3e4e4b hapee-rhel-9-amd64-3. 0r1-20250121.ovaWindows: Use the PowerShell command
Get-FileHashto get the checksum of the.ovafile. For example:powershellGet-FileHash hapee-rhel-9-amd64-3.0r1-20250121.ovapowershellGet-FileHash hapee-rhel-9-amd64-3.0r1-20250121.ovaoutputtextAlgorithm Hash--------- ----SHA256 EAC5F1F35A386DEC73C0BEF8769848014F76D0CF7688A651538C1D89CC3E4E4BoutputtextAlgorithm Hash--------- ----SHA256 EAC5F1F35A386DEC73C0BEF8769848014F76D0CF7688A651538C1D89CC3E4E4B -
Verify that the checksum matches the line for that
.ovain theSHA256SUMSfile.
-
-
In vSphere Client, select the action Deploy OVF Template.
-
Select Local file to upload a local file from your filesystem. Then choose the
.ovafile. Click Next. -
Use the wizard to customize the virtual machine’s name, compute resource, storage, and network.
-
On the Customize template screen, customize the virtual machine’s properties for your specific use case.
Property Description Encoded user-data Base64-encoded cloud-init user-data. See Set cloud-init user-data. SSH public keys An SSH public key for connecting to the instance. This populates the default user’s authorized_keysfile. For example,ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICjt... My PC.Default user’s password If set, the default user’s password will have this value to allow password-based login via the hypervisor console. The password will be good for only a single login. If set to RANDOM, then a random password will be generated and written to the console.A unique instance ID Required. The instance’s unique identifier. It determines whether the machine should take first boot actions. For example, loadbalancer1.Hostname Sets the instance’s hostname, such as loadbalancer1.URL to seed instance data from Indicates that the instance should seed cloud-init user-data and meta-data from the given URL. For example, if set to http://example.com/test-, meta-data will be pulled fromhttp://example.com/test-meta-dataand user-data fromhttp://example.com/test-user-data.Encoded network-config Base64-encoded cloud-init network-config. See Set cloud-init network-config. -
Start the VM.
-
Log in to the console with the username
ubuntu(Ubuntu) orcloud-user(Red Hat Enterprise Linux) and the password you set or the one randomly generated during the installation. -
Verify that the network interface driver is the
VMXNET3driver; we recommend it for its superior performance.The OVA image is already configured to use the
VMXNET3network interface driver, but if you add more interfaces, the hypervisor may provide a different driver as the default. Make sure you specify theVMXNET3interface driver instead. In particular, avoid theE1000driver, which isn’t optimized for use in a hypervisor.
Customize with cloud-init Jump to heading
On the Customize template screen, you can set cloud-init user-data and network-config to define users and set a static IP address.
Set cloud-init user-data Jump to heading
This cloud-init overrides other settings
Your cloud-init properties will override other properties you set during the installation, including the default user password and SSH public key. You won’t be able to log in as the default user unless you also add a user named ubuntu (Ubuntu) or cloud-user (Red Hat Enterprise Linux) in your cloud-config file.
In the example below, which you should modify with your own password and SSH key, we define user-data that creates a user named alex with passwordless sudo privileges, assigns them the password mypassword, and adds an SSH public key.
Remember to include #cloud-config at the top. For more details and other examples, see the cloud-init cloud config examples.
yaml#cloud-configusers:- name: alexgecos: Alex Smithprimary_group: alexgroups: wheel,users,sudosudo: ALL=(ALL) NOPASSWD:ALLshell: /bin/bashlock_passwd: falseplain_text_passwd: mypasswordssh_authorized_keys:- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHYDIqWP3fw6QdZIyGmNXk alex@example.com
yaml#cloud-configusers:- name: alexgecos: Alex Smithprimary_group: alexgroups: wheel,users,sudosudo: ALL=(ALL) NOPASSWD:ALLshell: /bin/bashlock_passwd: falseplain_text_passwd: mypasswordssh_authorized_keys:- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHYDIqWP3fw6QdZIyGmNXk alex@example.com
Base64 encode this, then enter the base64-encoded string into the Encoded user-data field when creating the virtual machine.
Set cloud-init network-config Jump to heading
You can provide cloud-init network-config to set a static IP address, as shown in this example. For more details and other examples, see the cloud-init network configuration.
yamlnetwork:version: 2ethernets:ens192:dhcp4: noaddresses:- 172.16.30.71/24gateway4: 172.16.30.1nameservers:addresses:- 8.8.8.8- 8.8.4.4
yamlnetwork:version: 2ethernets:ens192:dhcp4: noaddresses:- 172.16.30.71/24gateway4: 172.16.30.1nameservers:addresses:- 8.8.8.8- 8.8.4.4
yamlnetwork:version: 2ethernets:eth0:dhcp4: noaddresses:- 172.16.30.71/24gateway4: 172.16.30.1nameservers:addresses:- 8.8.8.8- 8.8.4.4
yamlnetwork:version: 2ethernets:eth0:dhcp4: noaddresses:- 172.16.30.71/24gateway4: 172.16.30.1nameservers:addresses:- 8.8.8.8- 8.8.4.4
Base64 encode this, then enter the base64-encoded string into the Encoded network-config field when creating the virtual machine.
The result is that after starting the VM and connecting to it, you can check that the static IP address has been set:
nixip address
nixip address
outputtext2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:6a:95:a1 brd ff:ff:ff:ff:ff:ffaltname enp11s0inet 172.16.30.71/24 brd 172.16.30.255 scope global ens192valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe6a:95a1/64 scope linkvalid_lft forever preferred_lft forever
outputtext2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:6a:95:a1 brd ff:ff:ff:ff:ff:ffaltname enp11s0inet 172.16.30.71/24 brd 172.16.30.255 scope global ens192valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe6a:95a1/64 scope linkvalid_lft forever preferred_lft forever