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:

  1. Go to the following URL. Replace <HAPROXY ENTERPRISE KEY> with your HAProxy Enterprise license key.

    text
    https://www.haproxy.com/download/hapee/key/<HAPROXY ENTERPRISE KEY>-vmware
    text
    https://www.haproxy.com/download/hapee/key/<HAPROXY ENTERPRISE KEY>-vmware
  2. Find the .ova file of the version of HAProxy Enterprise you want to install. Each .ova file installs a different version of HAProxy Enterprise on Ubuntu or Red Hat Enterprise Linux. Right-click the file and select Copy link.

  3. In vSphere Client, select the action Deploy OVF Template.

  4. Select URL to enter a URL from which to import the .ova file. Paste the link you copied. Click Next.

  5. Use the wizard to customize the virtual machine’s name, compute resource, storage, and network.

  6. 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_keys file. 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 from http://example.com/test-meta-data and user-data from http://example.com/test-user-data.
    Encoded network-config Base64-encoded cloud-init network-config. See Set cloud-init network-config.
  7. Start the VM.

  8. Log in to the console with the username ubuntu (Ubuntu) or cloud-user (Red Hat Enterprise Linux) and the password you set or the one randomly generated during the installation.

  9. Verify that the network interface driver is the VMXNET3 driver; we recommend it for its superior performance.

    The OVA image is already configured to use the VMXNET3 network interface driver, but if you add more interfaces, the hypervisor may provide a different driver as the default. Make sure you specify the VMXNET3 interface driver instead. In particular, avoid the E1000 driver, which isn’t optimized for use in a hypervisor.

To download the .ova file to your local file system:

  1. Go to the following URL. Replace <HAPROXY ENTERPRISE KEY> with your HAProxy Enterprise license key.

    text
    https://www.haproxy.com/download/hapee/key/<HAPROXY ENTERPRISE KEY>-vmware
    text
    https://www.haproxy.com/download/hapee/key/<HAPROXY ENTERPRISE KEY>-vmware
  2. Click to download the .ova file of the version of HAProxy Enterprise you want to install. Each .ova file installs a different version of HAProxy Enterprise on Ubuntu or Red Hat Enterprise Linux.

  3. Optional: Verify the integrity of the .ova file by comparing checksums.

    • Download the SHA256SUMS file. It contains checksums for the .ova files. Inside you’ll find two columns, where the left column is a checksum and the right column is the .ova file it corresponds to.

      SHA256SUMS
      text
      ae43142589b3ee... hapee-rhel-8-amd64-2.6r1-20250121.ova
      06ca84c7da61bf... hapee-rhel-9-amd64-2.8r1-20250121.ova
      f01a2a6263ebfe... hapee-rhel-9-amd64-2.9r1-20250121.ova
      ...
      SHA256SUMS
      text
      ae43142589b3ee... hapee-rhel-8-amd64-2.6r1-20250121.ova
      06ca84c7da61bf... hapee-rhel-9-amd64-2.8r1-20250121.ova
      f01a2a6263ebfe... hapee-rhel-9-amd64-2.9r1-20250121.ova
      ...
    • Generate the checksum for the .ova file you downloaded so that you can compare it to the value from the SHA256SUMS file.

      Linux: Use the command shasum to get the checksum of the .ova file. For example:

      nix
      shasum -a 256 hapee-rhel-9-amd64-3.0r1-20250121.ova
      nix
      shasum -a 256 hapee-rhel-9-amd64-3.0r1-20250121.ova
      output
      text
      eac5f1f35a386dec73c0bef8769848014f76d0cf7688a651538c1d89cc3e4e4b hapee-rhel-9-amd64-3. 0r1-20250121.ova
      output
      text
      eac5f1f35a386dec73c0bef8769848014f76d0cf7688a651538c1d89cc3e4e4b hapee-rhel-9-amd64-3. 0r1-20250121.ova

      Windows: Use the PowerShell command Get-FileHash to get the checksum of the .ova file. For example:

      powershell
      Get-FileHash hapee-rhel-9-amd64-3.0r1-20250121.ova
      powershell
      Get-FileHash hapee-rhel-9-amd64-3.0r1-20250121.ova
      output
      text
      Algorithm Hash
      --------- ----
      SHA256 EAC5F1F35A386DEC73C0BEF8769848014F76D0CF7688A651538C1D89CC3E4E4B
      output
      text
      Algorithm Hash
      --------- ----
      SHA256 EAC5F1F35A386DEC73C0BEF8769848014F76D0CF7688A651538C1D89CC3E4E4B
    • Verify that the checksum matches the line for that .ova in the SHA256SUMS file.

  4. In vSphere Client, select the action Deploy OVF Template.

  5. Select Local file to upload a local file from your filesystem. Then choose the .ova file. Click Next.

  6. Use the wizard to customize the virtual machine’s name, compute resource, storage, and network.

  7. 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_keys file. 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 from http://example.com/test-meta-data and user-data from http://example.com/test-user-data.
    Encoded network-config Base64-encoded cloud-init network-config. See Set cloud-init network-config.
  8. Start the VM.

  9. Log in to the console with the username ubuntu (Ubuntu) or cloud-user (Red Hat Enterprise Linux) and the password you set or the one randomly generated during the installation.

  10. Verify that the network interface driver is the VMXNET3 driver; we recommend it for its superior performance.

    The OVA image is already configured to use the VMXNET3 network interface driver, but if you add more interfaces, the hypervisor may provide a different driver as the default. Make sure you specify the VMXNET3 interface driver instead. In particular, avoid the E1000 driver, 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-config
users:
- name: alex
gecos: Alex Smith
primary_group: alex
groups: wheel,users,sudo
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
lock_passwd: false
plain_text_passwd: mypassword
ssh_authorized_keys:
- ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHYDIqWP3fw6QdZIyGmNXk alex@example.com
yaml
#cloud-config
users:
- name: alex
gecos: Alex Smith
primary_group: alex
groups: wheel,users,sudo
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
lock_passwd: false
plain_text_passwd: mypassword
ssh_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.

yaml
network:
version: 2
ethernets:
ens192:
dhcp4: no
addresses:
- 172.16.30.71/24
gateway4: 172.16.30.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
yaml
network:
version: 2
ethernets:
ens192:
dhcp4: no
addresses:
- 172.16.30.71/24
gateway4: 172.16.30.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
yaml
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses:
- 172.16.30.71/24
gateway4: 172.16.30.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
yaml
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses:
- 172.16.30.71/24
gateway4: 172.16.30.1
nameservers:
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:

nix
ip address
nix
ip address
output
text
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:6a:95:a1 brd ff:ff:ff:ff:ff:ff
altname enp11s0
inet 172.16.30.71/24 brd 172.16.30.255 scope global ens192
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe6a:95a1/64 scope link
valid_lft forever preferred_lft forever
output
text
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:6a:95:a1 brd ff:ff:ff:ff:ff:ff
altname enp11s0
inet 172.16.30.71/24 brd 172.16.30.255 scope global ens192
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe6a:95a1/64 scope link
valid_lft forever preferred_lft forever

Do you have any suggestions on how we can improve the content of this page?