Starting from Horizon 8 version 2406, you can use Horizon Lifecycle Management (LCM) APIs to automate and simplify installations of Omnissa Horizon Connection Server and Enrollment Server instances. This page offers high-level examples of LCM API requests that allow you to implement an automated installation or upgrade workflow.
About the LCM APIs
The LCM APIs are a part of the Horizon Server APIs. For more detailed information, see the documentation on https://developer.omnissa.com:
-
The Horizon Server API Getting Started Guide explains how to invoke APIs using the base URL path of the Horizon Connection Server.
-
The LCM REST APIs document provides guidelines for using the LCM APIs.
-
The Horizon Server API Reference provides full reference information for each API.
Using LCM APIs in a Terraform framework
Omnissa has also developed a Terraform provider for Horizon 8. You can use the LCM APIs with this Terraform provider to automate the lifecycle management of your Horizon 8 deployments.
The standard prerequisites apply when using LCM APIs with the Terraform provider.
You can find the Terraform provider for Horizon 8 at https://github.com/euc-dev/horizon-terraform.
Prerequisites
Before using the LCM APIs, you must complete these listed prerequisites. This page's sections provide details for each.
- Version 2406 or later of Horizon Connection Server
- Configure WinRM
- Prepare a hosting method
- Designate admin account for invoking LCM APIs
- If needed, configure a Connection Server host to trust a third-party CA
Version 2406 or later
Install or upgrade to at least one instance of Horizon Connection Server 2406 or later. The LCM APIs are only available from Horizon Connection Server starting with version 2406.
Note: For a new Horizon 8 deployment, you can use a command-line script to automate the initial Horizon Connection Server installation and then use the LCM APIs for subsequent installations.
Configure WinRM
Configure WinRM on these components:
- Horizon Connection Server host machine from which you are calling the LCM APIs
- Each target machine on which you will perform an automated installation or upgrade
Prepare hosting method
Prepare one of the following hosting methods:
SMB file share
Starting with the 2503 release, the LCM REST APIs support SMB file URLs for registering Connection Server build packages. This allows administrators to host build files on SMB shares and register them using the fileUrl parameter.
Prerequisites for using SMB file URLs:
- File URL format: Use the
smb://prefix in thefileUrlparameter. For example, with an EXE file namedOmnissa-Horizon-Connection-Server-x86_64-2503-8.15.0-13513405225, thefileUrlparameter format would besmb://smb-share/share-name/Omnissa-Horizon-Connection-Server-x86_64-2503-8.15.0-13513405225.exe(wheresmb-share/share-nameis the unique information of your SMB share). - Access permissions: Both the machine account of the Connection Server machine and the LCM user account must have read access to the SMB share.
- Machine account: This is the account representing the machine from which the API is invoked. It is represented as
DOMAIN\MACHINE$(for example,example.com\CS$for a machine named CS in theexample.comdomain). - LCM user account: This is the account used to invoke the LCM REST APIs.
To grant the read access permission to the accounts:
- Open the SMB share's properties (Properties), navigate to Security, and Edit to modify the permissions.
- Add the machine account (for example
example.com\CS$) and the LCM user account (for example,example.com\LCMUser) - Assign Read permissions to both accounts, and save the changes to the properties (Apply and OK.)
Then, to use the SMB file share to host the server build installer and LCM bundle file, prepare the SMB file share as follows:
- Download the server .exe installer and Horizon Lifecycle Manager Bundle (lcm.zip) from Omnissa Customer Connect.
- Place the .exe installer and lcm.zip together in the same directory on the SMB file share.
Web server
To use a web server to host the server build installer and LCM bundle file, prepare the web server as follows:
- Download the server .exe installer and Horizon Lifecycle Manager Bundle (lcm.zip) from Omnissa Customer Connect.
- Place the .exe installer and lcm.zip together in the same directory on the host web server.
Horizon Connection Server host
To use a Horizon Connection Server host to host the server build installer and LCM bundle file, prepare the Horizon Connection Server host as follows:
- If needed, configure the server host to trust a third-party Certificate Authority in the trust store.
- Download the server .exe installer and Horizon Lifecycle Manager Bundle (lcm.zip) from Omnissa Customer Connect.
- Place the .exe installer and lcm.zip together in the same directory on the server host.
Designate admin account for invoking LCM APIs
Designate the Horizon administrator account that you will use to invoke the LCM APIs. Ensure that this account belongs to the Local Administrators Group on every target machine that will receive the installation or upgrade.
Before upgrading
Before performing an upgrade, deactivate the target Horizon Connection Server instances. After the upgrade is complete, you must activate each Horizon Connection Server instance to make it available again for use.
Configure a server host to trust a third-party CA
If needed, use the following procedure to configure a Horizon Connection Server host to trust a third-party Certificate Authority (CA) in the trust store.
-
Open the Command Prompt (
cmd) as an administrator. -
Navigate to the Java bin directory, for example:
cd "C:\Program Files\Omnissa\Horizon\Server\jre\bin" -
Run the
keytoolcommand to import the certificate into the trust store:keytool -trustcacerts -keystore "C:\Program Files\Omnissa\Horizon\Server\jre\lib\security\cacerts" -storepass changeit -importcert -alias {YOUR_ALIAS} -file {YOUR_CRT_FILE}Replace {YOUR_ALIAS} with a unique alias for the certificate (for example,
MyCertAlias).Replace {YOUR_CRT_FILE} with the full path to your certificate file (for example,
C:\path\to\certificate.crt). -
When prompted, type
yesand press Enter to confirm and complete the certificate import. -
Open
services.mscand restart all the listed Omnissa Horizon components to apply the certificate changes.Alternatively, you can reboot the server to make the changes take effect.
Workflow examples
The following sections illustrate example LCM API requests used in a typical installation or upgrade workflow.
1. Create and assign LCM privileges
To execute LCM APIs, you must create the LCM_MANAGEMENT role and assign this role to the designated user account.
Create the LCM_MANAGEMENT role:
[POST] /config/v1/roles
{
"description": "Custom LCM role.",
"name": "LCM",
"privileges": [
"LCM_MANAGEMENT"
]
}
Assign the LCM_MANAGEMENT role to the designated account:
[POST] /config/v1/permissions
[
{
"userOrGroup": "UserOrGroup/Uy0xLTUtMjEtMjMzNzczOTMxMC0yNjQ3NjI3MzY0LTE3NzczMzI0NzktNTAw",
"role": "Role/NmU4MjgwMmYtMDc4Yi00NGI0LWJiYmEtNGU1MWIxYzNhZWRj/TENN",
"accessGroup": "AccessGroup/NmU4MjgwMmYtMDc4Yi00NGI0LWJiYmEtNGU1MWIxYzNhZWRj/Um9vdA"
}
]
Note: You can also create and assign the LCM_VIEW role to user accounts that only need to retrieve status information for LCM workflows. Users with LCM_VIEW privileges have read-only access and cannot issue POST requests.
2. Register the installer build
Users with the LCM_MANAGEMENT role can register the server build that will be installed on the target machines.
Note: If you upgrade to a later Horizon 8 release, you must re-register the new server build for that later release.
- For the request parameter, specify the file URL of the .exe build installer on the hosting location. Make sure that the Horizon Lifecycle Manager Bundle (lcm.zip) is located in the same directory as the .exe build installer, as described in Prerequisites.
- For the request body, include the build metadata.
Note: In the examples below, the EXEs are specific Horizon Connection Server installer build files and things in braces ({}) represent values you provide from your specific setup. When you run these commands in your deployment, substitute the specific installer file name that you have and your specific SMB share and web server information.
Example - SMB share
[POST] /rest/config/v1/server-installer-packages/action/register?fileUrl=smb://{smb-share}/{share-name}/Omnissa-Horizon-Connection-Server-x86_64-2503-8.15.0-13513405225.exe
{
"file_size_in_bytes": 401860608,
"version": "8.15.0",
"checksum": "d814d56a30477d07e8128a18c5ec09ba38984129f40911ad332e96c143e4fabb",
"build_number": "13513405225",
"filename": "Omnissa-Horizon-Connection-Server-x86_64-2503-8.15.0-13513405225.exe",
"display_Name": "Omnissa Horizon Connection Server"
}
Example - web server
[POST] /config/v1/server-installer-packages/action/register?fileUrl=https://{local-webserver}/installer/Omnissa-Horizon-Connection-Server-x86_64-2406-8.13.0-8565949332.exe
{
"build_number": "8565949332",
"checksum": "d2f31e1bc6de212f11a34b502ec16d66d5bf896947de3288a337c10df8c5be67",
"display_name": "Omnissa Horizon Connection Server",
"file_size_in_bytes": 365891976,
"filename": "Omnissa-Horizon-Connection-Server-x86_64-8.13.0-8565949332.exe",
"version": "2406"
}
When successful, the registration API returns the unique server_installer_package_id of the registered installer package.
You can also use the following LCM APIs to perform other registration tasks. For detailed information, see the reference page for each API.
| Task | API |
| Retrieve the list of all registered installer builds | [GET] /config/v1/server-installer-packages |
| Retrieve metadata for the installer build with the specified ID (server_installer_package_id) | [GET] /config/v1/server-installer-packages/{id} |
| Unregister the installer build with the specified ID (server_installer_package_id) | [POST] /config/v1/server-installer-packages/{id}/action/unregister |
3. Check installation prerequisites on the target machine
Pre-check APIs allow you to validate that target machines meet the appropriate requirements. Verify that you receive favorable responses to the following pre-check requests before you invoke any installation commands.
Validate system prerequisites for the target machine:
[POST] /config/v1/connection-servers/action/validate-system-requirements
Validate Active Directory prerequisites for the target machine:
[POST] /config/v1/connection-servers/action/validate-ad-requirements
Validate vCenter Server prerequisites for the target machine:
[POST] /config/v1/connection-servers/action/validate-virtual-center-requirements
Validate schema master and server replication status for the target machine to be upgraded:
[POST] /config/v1/connection-servers/action/validate-ldap-requirements
4. Run the installation command
After validating prerequisites for the target machines, you can invoke the installation or upgrade API.
Include the following information in the request body:
| Key | Value/Description |
| domain | Name of the Active Directory domain |
| server_installer_package_id | Server build ID that was provided in the build registration API response |
| target_server_fqdn | Fully qualified domain name (FQDN) of the target machine |
| user_name | Name of the user account used to schedule the installation/upgrade on the target machine. The user must have Horizon administrator privileges and belong to the local administrator group of the target machine. |
| password | Password of the user account used to schedule the installation/upgrade on the target machine |
| server_msi_install_spec | Specified installation options, required only for installation requests. For complete information, see the Schema section of the [POST] /config/v1/connection-servers/action/install-connection-server reference. |
Upgrade the server build on the target machine:
[POST] /config/v1/connection-servers/action/upgrade-connection-server
{
"domain": "AD-TEST-DOMAIN",
"password": "<password>",
"server_installer_package_id": "a3768752-77c6-45d0-8e20-908227bce79f",
"target_server_fqdn": "server.example.com",
"user_name": "Administrator"
}
Install the server build on the target machine:
[POST] /config/v1/connection-servers/action/install-connection-server
{
"domain": "AD-TEST-DOMAIN",
"password": "<password>",
"server_installer_package_id": "a3768752-77c6-45d0-8e20-908227bce79f",
"server_msi_install_spec": {
"admin_sid": "string",
"deployment_type": "GENERAL",
"fips_enabled": false,
"fw_choice": true,
"html_access": true,
"install_directory": "%ProgramFiles%\\Omnissa\\Horizon\\Server",
"primary_connection_server_fqdn": "server.example.com",
"server_instance_type": "STANDARD_SERVER",
"server_recovery_pwd": "<password>",
"server_recovery_pwd_reminder": "<reminder>",
"vdm_ipprotocol_usage": "IPv4"
},
"target_server_fqdn": "server.example.com",
"user_name": "Administrator"
}
Monitor the installation/upgrade job
After scheduling an installation or upgrade job on a target machine, you can check the job status with the following request. Include the FQDN of the target machine as the request parameter.
[POST] /config/v1/connection-servers/action/retrieve-installer-status?{fqdn}
Was this page helpful?