Stisknutím tlačítka "Enter" přeskočíte na obsah

Horizon 7.5 a JMP server

S verzí Horizon 7.0 přišel VMware s konceptem Just In-time Management. Tedy vytvářet stroje a přidělovat jim nastavení ve chvíli, kdy je uživatel potřebuje.

V praxi to znamená, že budeme využívat Instant Clones, které se vytváří skutečně ve chvíli, kdy se uživatel připojí a zažádá si o virtuální desktop. Tyto desktopy mají ale jednu výhodu/nevýhodu. Jsou vytvářeny na velmi krátkou dobu – pouze do odhlášení uživatele. Poté se desktop automaticky smaže a místo něj se vytvoří nový čistý.

Vytvoření Instant Clone a jeho customizace je skutečně velmi rychlá. Klonování probíhá z již spuštěného stroje, včetně paměti RAM a tudíž není třeba Operační systém znovu startovat, jako tomu bylo u linkovaných klonů. Samotná customizace pak probíhá pouze přejmenováním stroje a jeho znovu připojením do domény pod novým jménem. To vše bez nutnosti restartu.

Pokud by někdo měl problém s duplikátním SID, a stále tvrdil, že SYSPREP je nutný, doporučuji přečíst si článek od Marka Russinoviche zde.

Aby se dosáhlo uživatelského pocitu, že pracuje stále se stejným strojem, tak se k tomu používají další nástroje. A to App Volumes pro doručování aplikací a User Environment Manager (UEM) pro zachování uživatelského nastavení.

Pro základní konfiguraci UEM doporučím následující odkaz: https://blogs.vmware.com/euc/2015/04/vmware-user-environment-management-solution-deploy-60-minutes.html

Pokud byste chtěli používat všechny 3 komponenty, tak musíte mít nejvyšší edici Horizonu a to Enterprise.

Ve verzi 7.5 VMware pak přidal novou komponentu, která tyto 3 věci spojuje do jednoho celku. JMP server.

Jeho instalace má ale svá specifika, která jsou popsána v dokumentaci. Já se je pokusím sepsat všechny postupně zde.

  1. Je potřeba mít MS SQL databázi
    1. Můžete použít SQL Express, která je také podporována, ale toto je podporováno podle dokumentace pouze pro menší prostředí tytu PoC, DEMO, Test.
    2. Pokud použijete SQL Express, tak doporučuji povolit přístup přes TCP/IP a nastavit správně Firewall.
    3. Vytvořit novou databázi, podle default nastavení.

Pokud budete chtít používat Windows Authentizaci, která je podporována, musíte vytvořit v SQL účet pro počítač, na kterém poběží JMP server.

V SQL Management studiu spustíte příkaz pro vytvoření Computer Loginu !Nezapomenout na konci opravdu ten znak $!

CREATE LOGIN [MYDOMAIN\JMPCOMPUTER$] FROM WINDOWS;

Pro lokálně instalovanou SQL Express, ale vytváříte login pro NT Authority\System.

CREATE LOGIN [NT AUTHORITY\SYSTEM] FROM WINDOWS;

Nastavit na JMP databázi DB owner pro vytvořený login JMP serveru

  • Stejná oprávnění bude potřebovat i uživatel, pod kterým budete instalovat JMP roli. Během instalace do SQL databáze přistupuje uživatel. Posléze, až běží služba, ta je spuštěna pod účtem “LocalSystem”. Tehdy se do databáze již ověřuje pomocí účtu počítače.

Jakmile máme připravenou databázi, tak se můžeme pustit do instalace JMP komponenty.
Prvních pár obrázků není třeba komentovat:

Zde vyberete, jestli chcete povolit i nezabezpečenou komunikaci s JMP serverem. Výchozí je nepovolit.

Následně vyberete databázi. Respektive zadáte adresu databázového serveru a následně přes tlačítko Browse vyberete konkrétní databázi, kterou máte pro JMP vytvořenou. Můžete si zvolit i SQL server autentizaci, ale Windows Authentication mi přijde flexibilnější. Pokud Váš SQL server používá SSL komunikaci, tak je třeba toto zvolit Enable SSL Connection?.
MS SQL nemá ve výchozím nastavení povoleno SSL. Pokud byste jej chtěli povolit, tak nastavení zde.

Pokud instalujete JMP server již na několikátý pokus, doporučuji ještě vybrat možnost “Overwrite existing database (if any)”

A pak už jen spustit instalaci a sledovat, až “teploměr” dojede až na konec.

Nyní máme nainstalován JMP server a můžeme se pustit do konfigurace Horizonu, aby JMP server používal.

Pokud Vám instalace selže, tak je dobré napodruhé zapnout logování instalace. Spustíte instalační soubor z příkazové řádky s parametrem /log:

VMware-JMP-installer.exe /log:"LOG_Folder_Path

Pokud používáte SSL pro rozhraní AppVolumes a Horizon serveru, je ještě třeba nastavit certificate trust s Horizon Connection Serverem a AppVolume Managerem.

Stáhnete si certifikát v Base-64 encoded X.509 formátu a uložíte jej na přesné místo s přesným jménem.

Já použil Chrome a Developer tools, které si zobrazíte přes  Menu -> More Tools -> Developer Tools (Stisknutím kláves Ctrl+Shift+I)

Soubory uložíte pod názvem  C:\Program Files (x86)\VMware\JMP\com\horizon.cert.pem pro Connection server, resp.

C:\Program Files (x86)\VMware\JMP\com\av-selfsigned.cert.pem pro AppVolumes Manager (co na tom, že to není self signed, soubor se tak musí jmenovat).

Pozor na příponu, Windows tam automaticky přidá i .CER, tak pak ještě přejmenovat z příkazové řádky.

Sepsal jsem skriptík v Powershellu, který Vám to zjednoduší. Stačí upravit řádky dva a tři, kam doplníte adresu Vašeho Connection Serveru a AppVolume Manageru a spustíte jej na serveru kde máte nainstalován JMP.

$opensslPath = 'C:\Program Files (x86)\VMware\JMP\openssl.exe'
$ConnServer = "sa-connserver.vclass.local"
$AppVolServer = "sa-appvol.vclass.local"

$HorizonCertPem = 'C:\Program Files (x86)\VMware\JMP\com\horizon.cert.pem'
$AppVolCertPem = 'C:\Program Files (x86)\VMware\JMP\com\av-selfsigned.cert.pem'
$pattern="-----BEGIN CERTIFICATE-----(.*?)-----END CERTIFICATE-----"

$ConnServerCert="Q" | & "$opensslPath" "s_client" "-connect" "$ConnServer`:443" "-showcerts"
"-----BEGIN CERTIFICATE-----" | out-file $HorizonCertPem -Encoding ascii
([regex]::match($ConnServerCert,$pattern).Groups[1].value).replace(" ","`r`n").trim() | out-file $HorizonCertPem -Append -Encoding ascii
"-----END CERTIFICATE-----" | out-file $HorizonCertPem -append -Encoding ascii

$ConnServerCert="Q" | & "$opensslPath" "s_client" "-connect" "$AppVolServer`:443" "-showcerts"
"-----BEGIN CERTIFICATE-----" | out-file $AppVolCertPem -Encoding ascii
([regex]::match($ConnServerCert,$pattern).Groups[1].value).replace(" ","`r`n").trim() | out-file $AppVolCertPem -Append -Encoding ascii
"-----END CERTIFICATE-----" | out-file $AppVolCertPem -append -Encoding ascii

Dále je třeba nastavit certifikát pro JMP server. Pokud jste při instalaci vybrali, že má povolit HTTP, tak není třeba, ale pokud ne, je potřeba nakonfigurovat JMP server, aby používal trusted certifikát z pohledu Connection Serveru.

Buď certifikát JMP serveru nastavíte jako trusted na Connection Serveru

  • Stáhnout certifikát z adresy https://<JMP_server_address>/
  • Naimportovat na Connection Serveru jako trusted

Elegantnější řešení – vygenerovat JMP serveru trusted certifikát z vaší CA

  • žádost o certifikát nechám na Vás 😉
  • Pokud použijete MS certifikační autoritu v rámci AD, tak se Vám certifikát objeví v Certification Manageru. Vyexportujte si jej ve formátu PKCS12 (PFX) včetně privátního klíče.
  • JMP server instalátor má součástí i openssl knihovny, tak je použijeme k exportu klíče a certifikátu do PEM formátu, kterému rozumí NGINX
    • cd C:\Program Files (x86)\VMware\JMP
      
      # Extract Certificate in PEM format
      .\openssl.exe pkcs12 -in C:\Users\Administrator\Desktop\JMP_cert.pfx -out .\com\XMS\nginx\conf\jmp_adcert.crt -nokeys -nodes
      
      # Extract private key in PEM format
      .\openssl.exe pkcs12 -in C:\Users\Administrator\Desktop\JMP_cert.pfx -out .\com\XMS\nginx\conf\jmp_adcert.key -nocerts -nodes
      
  • Následně pouze upravit NGINX.conf aby použil správný soubor certifikátu a klíče.
    • C:\Program Files (x86)\VMware\JMP\com\XMS\nginx\conf\nginx.conf

  • Restartovat služby JMP (VMware JMP Platform Services, VMware JMP API Service)
net stop wem_server
net stop xms_service

net start xms_service 
net start wem_server

 

Od verze 7.5 VMware přidal nové administrátorské rozhraní. Není tam ještě úplně vše, ale to nejdůležitější, co budeme teď potřebovat tam je. Předpokládám, že Horizon View již máte nakonfigurován, jako normálně – Zadána licence, přidán vCenter, nastavená EventDB apod.

Do nového rozhraní se dostanete po přihlášení klinkutím na Horizon Console vpravo nahoře. Nebo přímo zadáním adresy https://<connectionserver>/newadmin

Nejprve je potřeba zadat adresu JMP serveru

Pokud se Vám objeví následující hláška, tak jsou čtyři nejčastější příčiny

  1. Zadáváte špatnou adresu serveru
  2. Služba JMP serveru skutečně neběží
  3. Certifikát JMP serveru není trusted z pohledu Connection Serveru
  4. Uživatel pod kterým máte přihlášené administrační rozhraní není nastaven Explicitně jako Administrátor (na uživatele!!, nikoli na skupinu).

První tři příčiny zvládnete pořešit sami. Poslední je chyba v JMP serveru, která je popsána v Release notes, a bude opravena v některé z příštích verzí.

Takže je potřeba se přepnout zpět do Administračního rozhraní a přidat tohoto uživatele jako Administrátora. Pak bude třeba se odhlásit a přihlásit znovu.

Pokud se Vám objeví tato hláška, tak se s největší pravděpodobností nepodařil správně krok s konfigurací horizon.cert.pem souboru. Nebo jste naimportovali certifikát jiného connection serveru, než ze kterého se přihlašujete.

Pokud se vše podaří, bude to vypadat takto.

Nyní je potřeba nastavit JMP server, aby věděl s jakým Connection serverem bude komunikovat a pomocí jakých credentials. Adresu Connection serveru doplní automaticky.

Dále je třeba přidat oprávnění do AD

Stalo se mi, že mi nahlásil chybu, ale když jsem zavřel to okno a dal jen refresh stránky, tak už se záznam v pořádku objevil.

Dále přidáme komunikaci s AppVolume Managerem.

Poslední co nastavíme, jak bude přistupovat JMP server k fileshare UEMconfig. Zde nastavujete účet, který má stejná oprávnění jako administrátor UEM.

Tímto jste provedli základní konfiguraci JMP serveru a můžete začít používat. Na to se podíváme někdy příště.