Thursday, July 23, 2015

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
      ubuntu-settings

  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)
    ubuntu-update-manager

  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
      tools-mounted

    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 vmware-install.pl
      tools-install
      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
      agent-download

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

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

  3. Reboot Ubuntu

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

  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
      new-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.
    files

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

VMName,Parentvm,CustomSpec,Datastore,Host,FromSnapshot,DeleteIfPresent
linux-001,Ubuntu-Template,linuxagent,share,192.168.1.174,snap1,TRUE
linux-002,Ubuntu-Template,linuxagent,share,192.168.1.174,snap1,TRUE

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
    powerCLI_linkedclone
    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
    powerCLI_Agent_install3

  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
    registered_linked
    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
    success!




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
askpass
:: 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
powerCLI-agent-install-failed-to-athenticate

:: 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
troubleshoot-hostname-resolveable


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

View Administrator shows VMs as Agent Unreachable
troubleshoot-unreachable

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

7 comments:

  1. Ryan, what does "NOTE: if using Windows Server 2012/R2 AD, follow the step 8 on page 11 from this doc" refer to?

    ReplyDelete
  2. Hi Jack. The text "this doc" should link to the official Linux Install Guide. Page 11 covers Preparing a Linux Guest for Remote Desktop Access, and this step has you enable reversible password encryption if you have Active Directory 2012 or 2012 R2.

    ReplyDelete
  3. Hello Sir,

    I have urgent requirement of scripted deployment of 500 Ubuntu linux machines for a open source project from a customer, The above article published by you provides fantastic information about the linux VDI deployment and which would actually meet my requirement. The sad part is that the scripts hosted on the cloud are not available for download. It would be greatly appreciated if you can share the scripts on the below email

    ReplyDelete
  4. Links have been updated, thank you for letting me know. Good luck with your deployment!

    ReplyDelete
  5. I'm having an issue installing the agent. It seems like its timing out waiting for input. I see 'Are you sure to install linux agent (y/n)? Invalid input and installation stopped.' The files are copied to the vm's, but the vm's are not registed. Any help is appreciated. Great article by the way.

    ReplyDelete
  6. […] of the more popular posts on That Virtual Boy has been Deploying Linux VDI Pools with Horizon 6. That post was written when Linux and VDI were just getting acquainted. Horizon has grown up a bit […]

    ReplyDelete
  7. add '-A yes' before the command ./install_viewagent.sh

    example:
    $cmd = "cd VMware-horizonagent-linux-* && ./install_viewagent.sh -A yes -n $VMName -b $brokerAddress -d $domainName -u $brokerAdminName -p $brokerAdminPassword"
    Write-Host "Run install cmd in VM '$VMName' with user '$guestUser'"

    ReplyDelete