Archiv der Kategorie: Azure

Azure VMs konfigurieren per Custom Script Extension

Die Technik der Custom Script Extension gibt es bei Azure schon einige Jahre. Dahinter steckt ein Agent, der ein zuvor festgelegtes Skript auf die VM „anwendet, in dem es in ein Download-Verzeichnis gespeichert und dann ausgeführt wird. Das Skript kann ein PowerShell-Skript sein, es kann aber auch eine Exe-Datei oder etwas Anderes sein. Eine Custom Script Extension ist für spezielle Aktivitäten gedacht, die nach der Bereitstellung einer VM ausgeführt werden sollen. Sie können aber auch zu einem beliebigen Zeitpunkt ausgeführt werden.

Die sparsame Verwendung der Mehrzahlform deutet es dezent an, es kann pro VM nur eine Custom Script Extension geben. Über sie können aber mehrere Skripte zusammengefasst werden, von denen ein Skript automatisch ausgeführt wird.

Die Custom Script Extension ist z.B. für die automatisierte Installation von Anwendungen in einer VM gedacht.

Das soll ein kleines Beispiel veranschaulichen

Ausgangspunkt ist eine Exe-Datei, die in einem Azure Storage-Blob liegt:

$PackageUri = „https://standardspeicher.blob.core.windows.net/packages/SumatraPDF-3.1.2-64-install.exe“

Das ist aber keine Voraussetzung. Grundsätzlich spielt der Aufenthaltsort der Exe-Datei keine Rolle. Irgendwo in der Cloud oder in einem Ftp-Verzeichnis.

Gesucht ist ein PowerShell-Skript, dass diese Exe-Datei herunterlädt und ausführt. Das folgende Skript erledigt das:

Am Ende wird die Exe-Datei zusammen mit dem Schalter /S per Invoke-Expression ausgeführt. Nicht optimal, aber per Start-Process erhielt ich auch mit Admin-Credentials ein „Access Denied“ beim Versuch die Exe-Datei zu starten.

Das Skript selber befindet sich auch in einem Azure Storage-Account:

$FileUri = „https://standardspeicher.blob.core.windows.net/ps1blob/Azure_InstallAppForVM.ps1“

Das Skript, das die Custom Script Extension hinzufügt, ist wie folgt aufgebaut:

Die entscheidende Rolle spielt das Set-AzureRmVMCustomScriptExtension-Cmdlet aus dem AzureRm.Compute-Modul. Es richtet die Custom Sript Extension für die angegebene VM, die dazu ausführen muss, ein.

Der Run-Parameter legt das Skript fest, das ausgeführt werden soll (bei einem einzigen Skript ist er vermutlich nicht erforderlich – ich hatte keine Lust mehr das auszuprobieren;).

Ein

ruft die Custom Script Extension über ihren Namen ab.

In der Praxis müsste man die Installation z.B. über eine CSV-Datei steuern, in der die Namen, Urls usw. der zu installierenden Anwendungen ethalten sind.

Insgesamt ist die Custom Script Extension eine flexible Technik, die, anders als Azure DSC, auch keine zusätzlichen Kosten verursacht.