Deploying Linux VDI Pools with Horizon 6

LinuxSee the updated version for Horizon 7 here.

Horizon 6 brought us many exciting changes. One of the more memorable ones is the addition of support for certified Linux Guests. At the time of this writing, Horizon 6 supports RHEL 6.6, Ubuntu 12.04, CentOS 6.6, and Neoukylin 6/6U1.

NOTE: newer versions may work just fine, but aren't certified to work. Meaning, if you want VMware Support to back you up, you should probably stick with the versions listed above.

To get started using Linux with your VDI implementation, make sure you have the prereqs:
  • vSphere 5.5 U2 or vSphere 6.0 and later
  • Horizon 6.1.1 or later
  • Horizon Client 3.4 or later
  • Note that Zero and mobile are not supported at this time
For the purposes of this post, we'll be using Ubuntu 12.04 with vSphere 5.5 U2e and Horizon 6.1.1. I'm going to cover building both a manual pool, as well as a bulk linked clone pool.
  1. First, let's build the template VM.

    1. Create a new VM and install Ubuntu 12.04 with 2vCPU and 2GB of RAM

  2. After it's installed, run Ubuntu's Update Manager and get the system fully patched (be sure to decline the 14.04 dist upgrade)

  3. Now we'll install VMware Tools
    1. Right click VM > All vCenter Actions > Guest OS > Install VMware Tools
    2. Click Mount
    3. Once mounted, you should see a folder pop up

    4. I like to copy the VMwareTools-9*.tar.gz file to the Desktop.
      1. Right click the .tar.gz and choose Copy to > Desktop
    5. Right click the .tar.gz on the desktop and choose Extract Here
    6. Open Terminal, change directory into the folder, and run
      To accept defaults, hit Enter for each question unless you understand what you're customizing.

    7. Reboot Ubuntu

  4. Ensure DNS is working to and from the View Connection Server
    DNS DNS-broker

  5. Proceed to building a manual pool or bulk linked clone pool below.

Building a manual Pool

  1. Now we're ready to install the Linux View Agent!

    1. NOTE: if using Windows Server 2012/R2 AD, follow the step 8 on page 11 from this doc

    2. NOTE: if your Ubuntu VM doesn't have internet access, follow step 9 on page 12 from the above doc

  2. Unpack the tar ball, and run -b -d -u -p appropriately:

    1. When the install completes successfully, it should prompt you to reboot or logout

  3. Reboot Ubuntu

  4. Back in the View Admin page, ensure the VM is registered to View

  5. In the View Admin page, create a new Manual Desktop Pool and add the VM.

    1. NOTE: This pool can only contain Linux VMs

Building a bulk Linked Clone pool

Building a Linux linked clone pool is not quite as simple as creating a Windows linked clone pool (yet .. crossing fingers). Essentially we automate the cloning process with PowerCLI, then add the created linked clones to a manual pool within View.

  1. Create a View Administrative user (viewuser) in the Ubuntu Guest OS. This account is dedicated for installing the View Agent.

    1. Settings > User Accounts > Create Admin User

    2. The account will remain disabled until you set a password. Hover your mouse over Password under Login Options and set the password.

    3. Edit /etc/sudoers and add viewuser ALL=(ALL) NOPASSWD:ALLsudoers

  2. Shutdown the VM and take a vCenter Snapshot

  3. Build the guest customization script

    1. From vSphere Web Client Home page, click Rules and Profiles > Customization Specification Manager

    2. Click the Create a New Specification button

    3. Select Linux for the target OS and enter your desired input

      custom-spec-name custom-spec-review

    4. Note the specification name you entered as this will be referenced in your CloneVMs.csv file later

  4. On your PowerCLI machine, create a folder to store the Horizon Linux PowerCLI scripts

  5. Download these three files to your folder (Sometimes my file server is down for maintenance): CloneVMs.csv, CloneVMs.ps1 and InstallAgent.ps1. If you'd rather copy the text from the official VMware docs, you'll want to copy it from the HTML version here. You'll also want to include the Linux Agent installer in your folder for later.

  6. Customize CloneVMs.csv to match the details of your environment - in my file, I'm only building 2 VMs


Once this file is tweaked to match your environment, we can starting running the PowerCLI scripts

  1. Launch PowerCLI and change directory into the folder we created containing the scripts

  2. Invoke the CloneVMs.ps1 script and answer the prompts
    You should start seeing the clones show up in vCenterpowerCLI_linked_creation

  3. Once the linked clones have been created, we'll run the Agent Installation script

  4. If you run into any errors, check out the troubleshooting section below.

  5. Assuming this completes successfully, you should see the machines show up as registered VMs in View Administrator: View Configuration > Registered Machines > Other
    NOTE: at this point you shouldn't see a Pool assigned already like my screenshot. We'll perform that next

  6. Now let's create a manual pool to add our freshly baked Ubuntu Linked Clones

    1. Catalog > Desktop Pools > Add

    2. Select Manual Desktop Pool

    3. Pick your assignment preferences

    4. On Machine Source page, choose Other Sources

    5. After selecting your VMs, don't change the Remote Display Protocol - it needs to be left default.

    6. NOTE: Don't add Windows VMs to this pool, it will cause the Linux machines to become unavailable

  7. Victory! Ensure you're on the latest Horizon Client before connecting

Troubleshooting VM cloning and Agent install

When running the InstallAgent.ps1 script, you see the error 

sudo: no tty present and no askpass program specified
Sorry, try again
:: Double check your sudoers file we edited earlier. There is likely a typo, or the username wasn't entered in all lowercase.

When running InstallAgent.ps1 you see the error
Failed to authenticate with the guest operating system

:: Verify password is correct. Check username is lowercase in script as that's the default case for new accounts

When running InstallAgent.ps1 you see the errorHostname not resolvable, terminating installation
Ensure host is registered with name service or listed in hosts file

:: Ensure your Custom Specification file is properly referenced and the vm naming is correct

View Administrator shows VMs as Agent Unreachable

:: Check out the official troubleshooting doc for this one here.

Previous: "Using OwnCloud with an..." Next: "Updating Appliances Offlin..."