In einigen Fällen kommt auch der VMware vRealize Orchestrator mit all seinen Plugins an seine Grenzen. Meine Lösung hierfür ist in den meisten Situation ein PowerShell Host. Dieser kann über das PowerShell Plugin (VMware Dokumentation) zum ausführen externer Skripte eingebunden werden. Um sicherzustellen, dass dieses Vorgehen auch in der Aktuellen Windows Server Version funktioniert habe ich einen Windows Server 2016 PowerShell Host zusammen mit einem vRealize Orchestrator 7.0.1 getestet.
Zwei mögliche Setups habe ich getestet:
- Simpel und unsicher: Workgroup
- Komplex und Sicher: Domain
Windows Server 2016 PowerShell Host – Workgroup
Hierbei handelt es sich auch um die unsichere Umsetzung. Es wird nur Basic Authentifizierung verwendet und über HTTP unverschlüsselt kommuniziert. Dennoch ist es einen Test Wert.
WinRM Konfiguration
Der erste Schritt ist die WinRM Basis Konfiguration.
winrm quickconfig
Dann Basic Authentifizierung zulassen.
winrm set winrm/config/service/auth @{Basic="true"}
Auch unverschlüsselte Verbindungen, also via HTTP, zulassen.
winrm set winrm/config/service @{AllowUnencrypted="true"}
Und als letztes noch die TrustedHosts pflegen.
winrm set winrm/config/client @{TrustedHosts="*"}
Firewall Konfiguration
Zur Sicherheit aktiviere ich noch einmal explizit den HTTP Port für WinRM in der Windows Firewall.
New-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" -Name "Windows Remote Management (HTTP-In)" -Profile Any -LocalPort 5985 -Protocol TCP
PowerShell Remoting aktivieren
PowerShell Remoting wird nicht unbedingt benötigt, ist aber für Tests in dieser Konstellation sehr sinnvoll.
Enable-PSRemoting -SkipNetworkProfileCheck -Force
VMware vRealize Orchestrator PowerShell Host
Nun kann der vorher Konfigurierte Windows Server 2016 mit dem „Add a PowerShell Host“ Workflow als Objekt im vRealize Orchestrator hinzugefügt werden.
VMware vRealize Orchestrator PowerShell Host Test
Abschließend noch ein kurzer Test mit dem neuen PowerShell Host.
Windows Server 2016 PowerShell Host – Domain
Hierbei handelt es sich um die sichere Umsetzung. Es wird Kerberos Authentifizierung verwendet und über HTTPS verschlüsselt kommuniziert. Die Umsetzung ist jedoch etwas aufwändiger.
WinRM Listener mit Self-Signed Zertifikat
In meinem Beispiel verwende ich ein kleines PowerShell Script zur Generierung eines Zertifikates und der Konfiguration von WinRM.
$DNSName = $(Get-WmiObject -class win32_computersystem).name + "." + $(Get-WmiObject -class win32_computersystem).domain $Name = $(Get-WmiObject -class win32_computersystem).name $cert = New-SelfSignedCertificate -DnsName $ENV:COMPUTERNAME, "$env:COMPUTERNAME.$env:USERDNSDOMAIN".ToLower() -CertStoreLocation Cert:\LocalMachine\My $Config = '@{Hostname="' + $ENV:COMPUTERNAME + '";CertificateThumbprint="' + $cert.Thumbprint + '"}' winrm create winrm/config/listener?Address=*+TransPort=HTTPS $Config
Quelle: http://www.joseph-streeter.com/?p=1086
Firewall
Zur Sicherheit aktiviere ich noch einmal explizit den HTTPS Port für WinRM in der Windows Firewall.
New-NetFirewallRule -DisplayName "Windows Remote Management (HTTPS-In)" -Name "Windows Remote Management (HTTPS-In)" -Profile Any -LocalPort 5986 -Protocol TCP
PowerShell Remoting aktivieren
PowerShell Remoting wird auch hier nicht unbedingt benötigt, ist aber wie gesagt für Tests in dieser Konstellation ganz sinnvoll.
Enable-PSRemoting -SkipNetworkProfileCheck -Force
VMware vRealize Orchestrator Konfiguration
Initial ist sicherzustellen das DNS funktioniert und die Zeit mit der gewünschten Login -Domäne per NTP im Sync ist.
Kerberos Setup
vi /usr/java/jre-vmware/lib/security/krb5.conf
Inhalt der krb5.conf:
[libdefaults] default_realm = LAB.LOCAL udp_preference_limit = 1 [realms] LAB.LOCAL = { kdc = win-59c17bbvrv3.lab.local default_domain = lab.local } [domain_realms] .lab.local=LAB.LOCAL lab.local=LAB.LOCAL [logging] kdc = FILE:/var/log/krb5/krb5kdc.log admin_server = FILE:/var/log/krb5/kadmind.log default = SYSLOG:NOTICE:DAEMON
Anpassung der Rechte der krb5.conf:
chmod 644 /usr/java/jre-vmware/lib/security/krb5.conf
VMware vRealize Orchestrator PowerShell Host
Wie in der vorherigen Konfiguration kann nun auch der sicher Konfigurierte Windows Server 2016 zum VMware vRealize Orchestrator hinzugefügt werden.
VMware vRealize Orchestrator PowerShell Host Test
Performance Optimierung
WinRM RAM Nutzung pro Shell erhöhen:
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"}
Nice article! Thanks for showing the steps including the krb5.conf. I was wondering if anyone had tried a windows 2016 powershell host, going to try based on your instructions
Thanks Steve.
have you tried adding a 2016 powershell host within vRA embedded vRO?
nm. had a typo in my krb5.conf I was able to add with no issues to an vRA 7.1 embedded vro appliance
Perfect.
I tried it with an external appliance. But should not make any difference.