HPE Alletra 5000/6000 (ehem. NimbleStorage) in GreenLake hinzufügen

Möchte man heute ein HPE Alletra Array der 5 oder 6000er Serie in Betrieb nehmen, muss man es zunächst in HPE GreenLake hinzufügen und mit der Data Services Cloud Console (DSCC) verbinden. Das geht leider nicht (mehr) ganz wie in sämtlichen Dokumentationen beschrieben, daher hier einmal kurz zusammengefasst:

  1. HPE Account erstellen (sofern noch nicht erfolgt) und die Subscription aktivieren (Aktivierungslink und Details sollten bei Array-Bestellung per Mail kommen)
  2. GreenLake Workspace erstellen
  3. Storage -> Data Services in dem GreenLake Workspace „provisionieren“
  4. Oben links im Menü neben dem GreenLake Logo unter Manage Users dem Benutzer via …-Menü Assign Role die Administrator Rolle für Data Services zuweisen
  5. Dann oben unter Devices im Inventory Add Device klicken, Storage Devices als Device Type auswählen, Purchase or Lease auswählen, die AF-XXXXXX Seriennummer als Serial Number und die Modellbezeichnung (z.B. 5010 für eine Alletra 5010) als Product Number verwenden und den Assistenten zuende Klicken.
  6. Unter Device Subscriptions kann man dann in gleicher Art mit dem Subscription Key die Subscription hinzufügen.
  7. Jetzt kann man den Setup-Assistenten des Arrays (aus dem Nimble Setup Manager) zu ende klicken und via Data Services -> Setup Service das Array konfigurieren.

HPE Alletra (Nimble) NCM auf ESXi Hosts installieren/aktualisieren

Das Alletra Multipath-IO (MPIO) braucht den „Nimble Connection Manager“ (NCM) für vSphere. Das ist ein kleines VIB auf dem ESXi Host.

⚠️ Die Installation des selbigen erfordert zwei (!) reboots des Host.

Das VIB kann man aber zum Glück auch ohne offline-Zauberei, Download aus dem Infosight-Support-Center und so weiter installieren. Noch nicht alle Teile von HPE wurden vom Greenlake-Virus zerstört 🙂

Lösung

Den NCM an der Konsole installieren oder aktualisieren:

esxcli software component apply -d https://update.nimblestorage.com/esx8.0/ncm

Dazu muss der ESXi Hosts selbstverständlich (temporär) ins Internet dürfen. Obwohl die Installation nach dem Abschluss behauptet Reboot Required: false ist dieser notwendig, sonst greifen die MPIO-Policies nicht.

FSLogix automatisch aktualisieren (FSLogix autp Update) [UPDATE]

Update: Im FSLogix-Paket haben sich Pfade geändert, die unnötige Fehlermeldung zu Beginn ist entfernt und die Pfade sind angepasst.

Leider ist FSLogix nicht in Windows-Update(s) enthalten. Der Admin einer RDS-Farm muss also selbstständig für seine Updates sorgen.

Da es aber in der Tat häufiger mal Updates für FSLogix gibt (Siehe Hotfix-Liste), die beispielsweise Fehler mit der Microsoft Office 365 Aktivierung beheben, lohnt es sich diese auch wirklich zu installieren. Man kann das Setup in derselben Version auch mehrfach ausführen, es wird nur installiert, wenn wirklich etwas Neues dabei ist.

Der Vorgang ist prinzipiell einfach: Neue Version herunterladen, ZIP-Datei auspacken, App-Installer ausführen und Server neu starten. Wäre das nicht toll, wenn das auch automatisch geht?

Lösung

Bei dem letzten Einsatz, der das Problem „Leeres Microsoft 365 Anmeldefenster“ behebt, ist ein PowerShell Script das selbiges tut entstanden. Einsatz auf eigene Gefahr ☺️

# Update FSLogix to "latest"
# [email protected]
#
# Achtung: BOOTET bei Erfolg den Server neu, ohne Rueckfrage!

# Aktuelle FSLogix-Version liegt hier
$FslogixUrl= "https://aka.ms/fslogix_download"

# Download landet hier
if ( Test-Path "C:\Windows\Temp\fslogix\install" ) { Remove-Item "C:\Windows\Temp\fslogix\install" -Force -Recurse }
mkdir "C:\Windows\Temp\fslogix\install" -Force | Out-Null
Write-Host "Download von" $FslogixUrl "... (180Mbyte)"
# Ausblenden der ProgressBar macht den Download 5x schneller
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri $FslogixUrl -OutFile "C:\Windows\Temp\fslogix\install\FSLogixAppsSetup.zip" -UseBasicParsing

# Auspacken
Write-Host "Auspacken von C:\Windows\Temp\fslogix\install\FSLogixAppsSetup.zip ..."
Expand-Archive -LiteralPath "C:\Windows\Temp\fslogix\install\FSLogixAppsSetup.zip" -DestinationPath "C:\Windows\Temp\fslogix\install" -Force -Verbose
Set-Location "C:\Windows\Temp\fslogix\install\x64\release"

# Installieren + Neustart
Start-Process "FSLogixAppsSetup.exe" -ArgumentList "/install /quiet" -Wait -Passthru

IIS ARR (Reverse Proxy) Fehler 400 (Keycloak, Camunda, Visi …) weil „Ein möglicherweise gefährlicher Request.Path-Wert wurde vom Client (:) entdeckt.“

In einem IIS mit ARR der andere Web-Services hinter sich schützt, tritt (gehäuft in letzter Zeit) schon mal ein „unerwarteter“ Fehler 400 auf. Im Ereignisprotokoll gibt es auch einen (ernsthaft) hilfreichen Hinweis. Der Fehler tritt gehäuft bei Sites auf, die das Angular Framework verwenden.

Eventlog Anwendung, Quelle ASP.NET 4.0.<build>, Ereignis-ID (EventID) 1309,

Event code: 3005 
Event message: Es ist eine unbehandelte Ausnahme aufgetreten. 
 
Application information:
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\inetpub\<PATH> 
 
Exception information: 
    Exception type: HttpException 
    Exception message: Ein möglicherweise gefährlicher Request.Path-Wert wurde vom Client (:) entdeckt.
   bei System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
   bei System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)

Die Request URL enthält einen Doppelpunkt. Einen „gefährlichen“ Doppelpunkt!!1elf

Dass der Doppelpunkt „gefährlich“ ist, liegt grundsätzlich nicht am IIS, sondern an der RFC1738, die genau definiert, wie eine URL aussehen darf („Uniform Resource Locators“). Darin ist nämlich festgelegt, dass …

…only alphanumerics, the special characters „$-_.+!‘(), and reserved characters used for their *reserved purposes* may be used unencoded within a URL

Der Doppelpunkt („colon“) „:“ ist so ein reserviertes Zeichen. Die RFC wird sogar noch deutlicher: „it’s used after the protocol (http, https) and after the domain to specify a port.“

Natürlich lässt sich das Verhalten des IIS anpassen, um solche „illegalen“ Requests zu erlauben. Das sollte man aber zumindest mit seinen Security-Leuten absprechen, die Änderung ist nicht ganz ohne. Die „Lösung“ hier lädt nur die Waffe, wenn sich der Admin damit selber ins Knie schießt, ist das sein Problem 😉

Lösung

Die „richtige“ Lösung ist natürlich, in der Webseite (Web App, Service, was auch immer) korrekt zu serialisieren. Angular nutzt dazu den UrlSerializer router; richtig eingesetzt tritt der Fehler nicht auf.

Oft hat man als Admin „am anderen Ende“ aber keinen Einfluss auf die Entwicklung so einer App. Man kann daher in der Site-Konfiguration (web.config) auf dem IIS die Request-Filterung konfigurieren.

Das hier ist eine Beispiel-Konfiguration, die mehrere solcher „Eigenheiten“ umgeht.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>

    <!-- Off=Debugausgaben in HTTP-Fehlern
         On=Gekuerzte Ausgavben (Produktivumgebung)
    -->
	<customErrors mode="Off" />

    <!--
        maxUrlLength: Lange Request URIs erlauben
        maxQueryStringLength: Lange Query-String (nach dem '?') erlauben
        relaxedUrlToFileSystemMapping: Dateisystemspfade (Doppelpunkte, \\?\) in URIs erlauben
        requestPathInvalidCharacters: Bestimmte Zeichen erlauben
    -->
	<httpRuntime
		maxUrlLength="10999"
		maxQueryStringLength="2097151"
		relaxedUrlToFileSystemMapping="true"
		requestPathInvalidCharacters="*,%,?,\,&amp;,&lt;,&gt;"
	/>
    </system.web>

    <system.webServer>
        <security>
            <!-- allowDoubleEscaping: \\ vor ? erlauben
             -->
            <requestFiltering allowDoubleEscaping="true">
                <requestLimits maxUrl="10999" maxQueryString="2097151" />
            </requestFiltering>
        </security>

vCenter lässt plötzlich root Login nicht mehr zu „Unable to authenticate user“

Vor ein paar Tagen hatten wir Probleme mit der Anmeldung beim vCenter Appliance Management Interface („VAMI“). Statt der Dienste-Gui sehen wir nur die Fehlermeldung

Unable to authenticate user

Das Passwort für den Root-Benutzer war ganz sicher war. Die Verbindung via SSH funktioniert problemlos.

Lösung

Der Dienst „applmgmt“ ist vermutlich abgestürzt. Der Dienst kann aber an der Shell neu gestartet werden und ist praktisch sofort wieder verfügbar.

  1. Als root (oder [email protected]) via SSH einloggen und mit shell die Shell starten. Sollte die Shell nicht freiwillig wollen, lässt sich diese mit shell.set --enabled true einschalten und danach starten.
  2. Den Dienst starten:
    service-control --start applmgmt

Und schon geht das GUI wieder.

Sollte das wider erwartend nicht funktionieren oder in einer Fehlermeldung enden, loht eventuell ein Blick auf https://knowledge.broadcom.com/external/article?legacyId=68149