Wenn Ihr Team damit beginnt, mehr Windows Azure Virtual Machines (VMs) bereitzustellen und zu konfigurieren, werden Sie irgendwann genug davon haben, das Rad immer wieder neu zu erfinden. Sie benötigen Automatisierung! In diesem Artikel begleite ich Sie Schritt für Schritt dabei, wie Sie mit Azure benutzerdefinierten Skripterweiterungen beginnen, um Azure dazu zu verwenden, Skripte auf Ihren VMs auszuführen.
Wenn Ihr Team in einer Windows-Umgebung arbeitet, ist eines der besten Tools zur Automatisierung der Serverkonfiguration PowerShell. Durch Verwendung des Azure PowerShell-Moduls kann Ihre Organisation die Leistungsfähigkeit von PowerShell nutzen, um nicht nur lokale Aufgaben zu automatisieren, sondern auch Befehle auf Azure VMs in Stapelverarbeitung anstatt einzeln auszuführen.
Microsoft hat uns eine Funktion namens Azure benutzerdefinierte Skripterweiterung zur Verfügung gestellt. Die benutzerdefinierte Skripterweiterung ist eine Azure-Virtual-Machine-Erweiterung, die vom VM-Agenten ausgeführt wird, um beliebigen PowerShell-Code gegen Ihre VMs mithilfe der Azure-API anstelle der direkten Konsoleneingabe in die VM oder Verwendung von PowerShell-Remoting auszuführen.
Das Ausführen von Befehlen auf diese Weise bietet mehrere Vorteile. Das Ausführen von Befehlen mit der Azure benutzerdefinierten Erweiterung in Windows:
- bietet erhöhte Sicherheit, da keine Netzwerkports für PowerShell-Remoting geöffnet werden müssen
- ermöglicht einfache Ausführung von PowerShell-Code beim Starten der VM
- überträgt automatisch Ressourcen von Azure Storage auf Ihre VM als Teil des Bereitstellungsprozesses.
- Eine einfache Möglichkeit, PowerShell-Skripts aus verschiedenen Azure-Speicherkonten auszuführen
Die Aktivierung einer benutzerdefinierten Skripterweiterung für Windows Azure kann auf verschiedene Arten erfolgen. In diesem Artikel konzentrieren wir uns darauf, die benutzerdefinierte Skripterweiterung über PowerShell zu aktivieren, aber Sie können die Erweiterung auch über eine Azure Resource Manager (ARM)-Vorlage aktivieren.
Als einfaches Beispiel nehmen wir an, dass Sie sicherstellen möchten, dass die PowerShell-Remotefreigabe auf einer Azure-VM in Ihrem Abonnement aktiviert ist. Dazu müssen Sie den folgenden Befehl lokal auf jeder VM ausführen:
Erstellen wir eine benutzerdefinierte Skripterweiterung, um dies zu tun.
Verwenden von Azure zum Ausführen eines Skripts auf einer VM
Erstellen Sie zunächst ein PowerShell-Skript namens Enable-PSRemoting.ps1 auf Ihrem lokalen Computer mit dem oben angegebenen Befehl. Dieses Skript muss auf einer Azure-VM ausgeführt werden. Dazu erstellen wir ein weiteres kleines PowerShell-Skript namens New-CustomScriptExtension.ps1, um es in Azure hochzuladen und eine benutzerdefinierte Skripterweiterung zu erstellen, die es ausführt. Bevor wir zu weit gehen, benötigen Sie ein paar Dinge:
- Der Name der Azure-Ressourcengruppe und des Speicherkontos, in dem das Skript gespeichert wird
- Der Name des Azure-Speichercontainers
- Der Name der VM
- Der Name der Azure-Ressourcengruppe, in der sich die VM befindet
Dieses Skript kann in zwei Abschnitte unterteilt werden: das Hochladen des kleinen PowerShell-Skripts in Azure und das Erstellen der benutzerdefinierten Skripterweiterung. Alles andere dient dazu, diese beiden Prozesse miteinander zu verbinden.
Hochladen eines PowerShell-Skripts in Azure
Zunächst laden wir das Skript Enable-PSRemoting.ps1 in das Azure-Speicherkonto ($StorageAccountName
) in dem Container ($ContainerName
) in der Ressourcengruppe ($ResourceGroupName
) hoch.
Ausführen der benutzerdefinierten Skripterweiterung
Wenn Sie New-CustomScriptExtension.ps1 ausführen, wird dieses Skript das Skript Enable-PSRemoting.ps1 in das angegebene Azure-Speicherkonto hochladen.
Jetzt, da das Skript in Azure gespeichert ist, können Sie es über die benutzerdefinierte Skripterweiterung für die VM ausführen:
- Name:
$VMName
- Ressourcengruppe:
$rgName
- Speicherkonto:
$saName
- Speichercontainer:
$scName
Öffnen Sie einen Texteditor für New-CustomScriptExtension.ps1 und fügen Sie das folgende Beispiel ein. Wenn Sie dies ausführen, wird die Azure benutzerdefinierte Skripterweiterung für Windows ausgeführt, die das zuvor hochgeladene PowerShell-Skript Enable-PSRemoting.ps1 ausführt.
Zusammenfassung
Sobald dieses Skript abgeschlossen ist, können Sie überprüfen, ob Enable-PSRemoting.ps1 auf der VM ausgeführt wurde und PowerShell-Remoting erfolgreich aktiviert wurde. Sie sollten jetzt Invoke-Command
gegen Ihre Azure-VM verwenden können.
Durch die Nutzung der Azure-Benutzerdefinierte Skripterweiterung in Windows haben Sie nun die Möglichkeit, beliebige PowerShell-Skripte remote auf Ihren Azure-VMs auszuführen.
Source:
https://adamtheautomator.com/azure-run-script-on-vm/