Alte FSLogix-Profile mit Nerdio löschen

Nerdio stellt ein Azure Runbook als Scripted Action bereit, welches Profile auf einem Storage Account löscht, wenn dies älter als eine zu definierende Anzahl Tage alt ist. Für das Ausführen werden folgende Parameter benötigt:

  • StorageAccountName
  • ShareName
  • DaysOld
  • StorageKeySecureVar

Ich habe mir das genauer angesehen und das Verbesserungspotential gesehen.

Berechtigungen

Mit einer Nerdio Manager for Enterprise stelle ich in der Regel auch die Storage Accounts bereit. Auch das Autoscaling des Storage Accounts wird von Nerdio als Premium Feature durchgeführt, um die Grösse, Performance und Kosten zu optimieren.

Dadurch hat das Service Principal von Nerdio genügend Rechte auf dem Storage Account, um eine temporäre Shared Access Signature zu erstellen.

Damit sind nun die Vorrausetzungen geschaffen, dass wir keinen Storage Key als Variable hinterlegen, und beim Ausführen verwenden müssen.

Geplanter Task

Eine weiter Möglichkeit mit Nerdio ist es, eine Scripted Action als Geplanter Task ausführen zu lassen. Aktuell gibt es noch die Einschränkung, dass eine Scripted Action nur mit einer Konfiguration ausgeführt werden kann. Dies bedeutet, dass ich mit dem bestehenden Script nur einen Storage Account bereinigen kann. Diese Einschränkung ist erkannt, und es wird an der Lösung gearbeitet. Nur mehrere Kopien der Scripted Actions können das Problem lösen.

Auch diese Limitierung wollte ich umgehen.

WhatIf

Bevor ich die Scripted Action Daten löschen lasse, wollte ich erst prüfen, was denn das Script löschen würde. Dies war mit der bestehenden Variante nicht möglich.

Und so habe ich in den neuen Varianten dies ebenfalls ermöglicht.

Neue Versionen des Scripts

Als erstes habe ich eine neue Version der Scripted Action entwickelt, dass ohne Storage Access Key auskommt. Eine weitere Version habe ich erstellt, um mehrere Storages Accounts bedienen zu können. Alle Informationen müssen dazu in einer Variable gespeichert werden, um dann diese Werte verwenden zu können. Beide Versionen ermöglichen ebenfalls erst nur auszugeben was gelöscht, und was ignoriert wird, ohne Daten zu löschen. Ich habe nun zwei Versionen des Scripts erstellt, welches ich nun gerne mit euch teilen würde.

Erweiterung um Shared Access Signature

In dieser Version habe ich es mir zunutze gemacht, dass ich mit dem Service Principal schon administrativen Zugang zu den Storage Accounts habe. Es ist aber weiterhin möglich mit einem Storage Access Key zu arbeiten.

Das Script kann wie folgt ausgeführt werden:

Hier nun das Script dazu:

Erweiterung um Secure Variable

Um nun aber mehrere Storage Accounts bereinigen zu können, habe ich eine Secure Variable in Nerdio erstellt, welche die Parameter in einem JSON formatierten String gespeichert sind. Beim Ausführen muss je nach Anzahl Storage Accounts das Timeout erhöht werden.

Es wird nun eine Variable benötigt, diese sollte auch nur für das Script eingeschränkt werden:

Inhalt der Variable:

Dieses Script kann nun wie folgt ausgeführt werden (beachte dabei das Timeout):

Nun auch noch das Script:

Abschluss

Beide Varianten können als geplante Aufgabe eingerichtet werden, die Parameter sind identisch, lediglich die entsprechende Zeitzone und Uhrzeit muss angegeben werden.

Ich hoffe das eine der beiden Script kann dir helfen, deine alten Profile zu bereinigen. Wir haben das die Erweitere Version mit der Secure Variable bei einem grossen Kunden in Einsatz, mit über 20 Storage Accounts. Wenn es gefällt freue ich mich über Kommentare und ein Teilen in der Community.