vRealize Orchestrator – Windows Server 2016 PowerShell Host

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

Windows Server 2016 PowerShell Host - winrm quickconfig

Dann Basic Authentifizierung zulassen.

winrm set winrm/config/service/auth @{Basic="true"}

Windows Server 2016 PowerShell Host - basic authentication

Auch unverschlüsselte Verbindungen, also via HTTP, zulassen.

winrm set winrm/config/service @{AllowUnencrypted="true"}

Windows Server 2016 PowerShell Host - - allow unencrypted

Und als letztes noch die TrustedHosts pflegen.

winrm set winrm/config/client @{TrustedHosts="*"}

Windows Server 2016 PowerShell Host - trustedhosts

Es kann auch ein oder mehrere explizite Hosts eingetragen werden!

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

Windows Server 2016 PowerShell Host - firewall HTTP

PowerShell Remoting aktivieren

PowerShell Remoting wird nicht unbedingt benötigt, ist aber für Tests in dieser Konstellation sehr sinnvoll.

Enable-PSRemoting -SkipNetworkProfileCheck -Force

Windows Server 2016 PowerShell Host - ps-remoting

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.

Windows Server 2016 PowerShell Host - add pshost - host details

Windows Server 2016 PowerShell Host - add pshost - host type

Windows Server 2016 PowerShell Host - add pshost - credentials

VMware vRealize Orchestrator PowerShell Host Test

Abschließend noch ein kurzer Test mit dem neuen PowerShell Host.

Windows Server 2016 PowerShell Host - test pshost - host Windows Server 2016 PowerShell Host - test pshost - script Windows Server 2016 PowerShell Host - test pshost - log

 

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

Windows Server 2016 PowerShell Host - Self-Signed Certificate

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

Windows Server 2016 PowerShell Host - firewall HTTPS

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

Windows Server 2016 PowerShell Host - ps-remoting

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.

Windows Server 2016 PowerShell Host - secure add pshost - host details

Immer DNS Name verwenden in Verbindung mit Kerberos Authentifizierung!

Windows Server 2016 PowerShell Host - secure add pshost - host type

Windows Server 2016 PowerShell Host - secure add pshost - credentials

Windows Server 2016 PowerShell Host - secure add pshost - log

VMware vRealize Orchestrator PowerShell Host Test

Windows Server 2016 PowerShell Host - secure test pshost - host

Windows Server 2016 PowerShell Host - secure test pshost - script

Windows Server 2016 PowerShell Host - secure test pshost - log

Performance Optimierung

WinRM RAM Nutzung pro Shell erhöhen:

winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"}

 

5 Comments

  1. steve schofield 30. November 2016
  2. steve schofield 16. Dezember 2016
    • steve schofield 16. Dezember 2016
      • Markus Kraus 16. Dezember 2016

Leave a Reply