Übung: Steuern der Bereitstellungsreihenfolge von Ressourcen
In diesem Teil führen Sie zunächst einige grundlegende Einrichtungsaufgaben aus. In Visual Studio Code verbinden Sie eine Terminalsitzung mit dem Azure-Abonnement, das von der kostenlosen Azure Sandboxumgebung bereitgestellt wird. Auf diese Weise können Sie Befehle in Azure authentifizieren.
Anschließend führen Sie eine einfache ARM-Vorlage aus, die einen virtuellen Linux-Computer (VM) bereitstellt. Nachdem die Bereitstellung abgeschlossen wurde, überprüfen Sie, ob die VM ausgeführt wird und verbunden ist.
Obwohl das Arbeiten mit VMs eine gängige Aufgabe ist, stellen Sie fest, dass eine VM-Ressource Netzwerk- und Speicherkomponenten erfordert, die vorhanden sein müssen, bevor die VM erstellt werden kann. Sie erkennen, wie das dependsOn
-Konstrukt es Ihnen ermöglicht, die Reihenfolge festzulegen, in der die Ressourcen bereitgestellt werden.
Einrichten
Hier öffnen Sie Visual Studio Code, erstellen eine PowerShell-Sitzung und stellen eine Verbindung mit dem Azure-Abonnement her, das von der kostenlosen Azure-Sandboxumgebung bereitgestellt wird.
Diese Setupaufgaben müssen Sie in diesem Moduls ein Mal ausführen. Sie können auf diese Schritte zurückgreifen, wenn Sie sich in einer späteren Übung abmelden oder getrennt werden.
Öffnen von PowerShell in Visual Studio Code
Öffnen Sie Visual Studio Code.
Öffnen Sie über das Menü Terminal ein Terminalfenster.
Wenn das Dropdownmenü rechts im Terminalfenster pwsh heißt, haben Sie die richtige Shell zum Arbeiten und können mit dem nächsten Abschnitt fortfahren.
Wenn dies nicht der Fall ist, wählen Sie das Dropdown aus und dann Standardshell auswählen.
Klicken Sie auf pwsh.
Wählen Sie das + im Terminal aus, um ein neues Terminal mit pwsh als Shell zu erstellen.
Anmelden bei Azure
Führen Sie
Connect-AzAccount
aus, um sich bei Ihrem Konto anzumelden.Connect-AzAccount
Ein Browserfenster wird geöffnet.
Wählen Sie das Konto aus, das Sie zum Aktivieren der Sandbox verwendet haben, und schließen Sie das Browserfenster, wenn Sie dazu aufgefordert werden.
Festlegen des aktiven Abonnements
Führen Sie
Get-AzSubscription
aus, um die Abonnement-ID für die Sandboxumgebung abzurufen.Get-AzSubscription
Suchen Sie nach
Concierge Subscription
, und kopieren Sie die zweite Spalte. Dies sieht in etwa wie cf49fbbc-217c-4EB6-9eb5-a6a6c68295a0 aus.Führen Sie
Set-AzContext
aus, um Ihr aktives Abonnement in das Concierge-Abonnement zu ändern.Hinweis
Stellen Sie sicher, dass Sie {Ihre Abonnement-ID} durch die ID des Concierge-Abonnements ersetzen, die Sie mit dem letzten Befehl erhalten haben.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
Festlegen der Standardressourcengruppe
Wenn Sie einen Azure CLI-Befehl ausführen, müssen Sie normalerweise eine Ressourcengruppe angeben.
Die Sandbox stellt eine Standardressourcengruppe für Sie bereit. Legen Sie hier die Standardressourcengruppe fest, damit die folgenden Azure CLI-Befehle einfacher ausgeführt werden können.
Führen Sie das Cmdlet Set-AzDefault
aus, um die Standardressourcengruppe festzulegen.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
Hinweis
Wenn Sie PowerShell verwenden, um Ressourcen in Azure bereitzustellen, müssen Sie normalerweise eine Ressourcengruppe angeben. Sie umgehen diese Anforderung, indem Sie den Kontext der Bereitstellung mit Set-AzDefault
festlegen.
Was enthält eine typische VM-Bereitstellung?
Beachten Sie beim Bereitstellen einer VM, dass mehrere Ressourcen zusammen mit dieser bereitgestellt werden müssen, damit die VM funktioniert.
Im Folgenden finden Sie eine kurze Zusammenfassung der Ressourcentypen, die in der Regel zusammen mit einer VM bereitgestellt werden müssen:
- Microsoft.Storage/storageAccounts. Ein Speicherkonto bietet Speicherplatz auf dem Datenträger für das Betriebssystem und Dateien.
- Microsoft.Network/publicIPAddresses. Mit einer öffentlichen IP-Adresse können Sie über das Internet eine Verbindung mit der VM herstellen.
- Microsoft.Network/networkSecurityGroups. Eine Netzwerksicherheitsgruppe enthält Regeln für die Verarbeitung von eingehendem und ausgehendem Datenverkehr für Ihr virtuelles Netzwerk.
- Microsoft.Network/virtualNetworks. Ihre VM muss in einem virtuellen Netzwerk platziert werden. Diese Ressource erfordert, dass die Netzwerksicherheitsgruppe vor ihr bereitgestellt wird.
- Microsoft.Network/networkInterfaces. Diese Ressource ist von zwei anderen Ressourcen abhängig: der öffentlichen IP-Adresse und dem virtuellen Netzwerk.
- Microsoft.Compute/virtualMachines. Bei dem virtuellen Computer handelt es sich um die primäre Ressource, die Sie bereitstellen möchten. Sie ist von zwei verschiedenen Ressourcen abhängig: dem Speicherkonto und den Netzwerkschnittstellen.
Bereitstellen eines virtuellen Linux-Computers
Hier laden Sie eine ARM-Vorlage aus einem GitHub-Repository herunter, das wir für Sie bereitstellen. Die Vorlage stellt eine Linux-VM und alle erforderlichen Ressourcen für deren Ausführung bereit.
Führen Sie den folgenden
curl
-Befehl aus, um die ARM-Vorlage herunterzuladen:curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
Führen Sie das Cmdlet
ConvertTo-SecureString
aus, und weisen Sie die Ergebnisse einer PowerShell-Variablen mit dem Namen$secure
zu:$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
Nun verfügen Sie über eine verschlüsselte Version Ihres Kennworts, die Sie im nächsten Schritt an das Bereitstellungsskript übergeben können.
Führen Sie den
New-AzResourceGroupDeployment
-Befehl aus, um die Vorlage bereitzustellen:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
Die Ausführung des Befehls kann einige Minuten dauern. Wenn Sie möchten, können Sie sich die ARM-Vorlage ansehen (auf einer separaten Browserregisterkarte), während der Befehl ausgeführt wird.
Beachten Sie die Ressourcenabhängigkeiten, indem Sie nach dem
dependsOn
-Schlüssel suchen. Beispielsweise ist die VM-Ressource von der Netzwerkschnittstelle abhängig:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Überprüfen der Bereitstellung
Vergewissern Sie sich, dass die VM bereitgestellt wird und über SSH verbunden werden kann. Gehen Sie folgendermaßen vor:
Führen Sie den Befehl
Invoke-Expression
aus, um eine Verbindung mit der VM über SSH herzustellen:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
Wenn Sie dazu aufgefordert werden, geben Sie
yes
ein, um die Verbindungsherstellung fortzusetzen. Geben Sie dann das Administratorkennwort ein:insecurepassword123!
.Wichtig
Wählen Sie in der Praxis sichere Kennwörter aus. Sie können auch die Authentifizierung mit öffentlichem Schlüssel verwenden, die in der Regel sicherer als die Verwendung von Kennwörtern ist.
Führen Sie
hostname
über die SSH-Verbindung mit der VM aus, um den Hostnamen der VM auszugeben:hostname
Sie sehen den internen Hostnamen
vm1
der VM:vm1
Führen Sie
exit
aus, um Ihre SSH-Sitzung zu verlassen.exit
Herzlichen Glückwunsch, Sie haben erfolgreich eine Linux-VM mithilfe einer ARM-Vorlage bereitgestellt. Eine VM ist ein allgemeiner Ressourcentyp, der abhängige Ressourcen enthält.
Einrichten
Hier öffnen Sie Visual Studio Code, erstellen eine Terminalsitzung und stellen eine Verbindung mit dem Azure-Abonnement her, das von der kostenlosen Azure-Sandboxumgebung bereitgestellt wird.
Diese Setupaufgaben müssen Sie in diesem Moduls ein Mal ausführen. Sie können auf diese Schritte zurückgreifen, wenn Sie sich in einer späteren Übung abmelden oder getrennt werden.
Öffnen einer Shell in Visual Studio Code
Öffnen Sie Visual Studio Code.
Öffnen Sie über das Menü Terminal ein Terminalfenster.
Wenn das Dropdownmenü Ihre bevorzugte Shell anzeigt (z. B. bash oder zsh), können Sie mit dem nächsten Abschnitt fortfahren.
Wenn dies nicht der Fall ist, wählen Sie das Dropdown aus und dann Standardshell auswählen.
Wählen Sie den gewünschten Shelltyp aus.
Wählen Sie + im Terminal aus, um ein neues Terminal mit dem ausgewählten Shelltyp zu erstellen.
Anmelden bei Azure
Führen Sie im Terminal
az login
aus:az login
Ein Browserfenster wird geöffnet.
Wählen Sie das Konto aus, das Sie zum Aktivieren der Sandbox verwendet haben, und schließen Sie das Browserfenster, wenn Sie dazu aufgefordert werden.
Festlegen des aktiven Abonnements
Führen Sie den folgenden az account set
-Befehl aus, um die Azure-Sandboxumgebung als aktives Abonnement festzulegen:
az account set -s "Concierge Subscription"
Hinweis
Wenn der Befehl fehlschlägt, führen Sie az account list --refresh --all
aus, und führen Sie den Befehl az account set
dann erneut aus.
Festlegen der Standardressourcengruppe
Wenn Sie einen Azure CLI-Befehl ausführen, müssen Sie normalerweise eine Ressourcengruppe angeben.
Die Sandbox stellt eine Standardressourcengruppe für Sie bereit. Legen Sie hier die Standardressourcengruppe fest, damit die folgenden Azure CLI-Befehle einfacher ausgeführt werden können.
Führen Sie den folgenden Befehl az configure
aus, um die Standardressourcengruppe festzulegen:
az configure --defaults group=<rgn>resource group name</rgn>
Was enthält eine typische VM-Bereitstellung?
Beachten Sie beim Bereitstellen einer VM, dass mehrere Ressourcen zusammen mit dieser bereitgestellt werden müssen, damit die VM funktioniert.
Im Folgenden finden Sie eine kurze Zusammenfassung der Ressourcentypen, die in der Regel zusammen mit einer VM bereitgestellt werden müssen:
- Microsoft.Storage/storageAccounts. Ein Speicherkonto bietet Speicherplatz auf dem Datenträger für das Betriebssystem und Dateien.
- Microsoft.Network/publicIPAddresses. Mit einer öffentlichen IP-Adresse können Sie über das Internet eine Verbindung mit der VM herstellen.
- Microsoft.Network/networkSecurityGroups. Eine Netzwerksicherheitsgruppe enthält Regeln für die Verarbeitung von eingehendem und ausgehendem Datenverkehr für Ihr virtuelles Netzwerk.
- Microsoft.Network/virtualNetworks. Ihre VM muss in einem virtuellen Netzwerk platziert werden. Diese Ressource erfordert, dass die Netzwerksicherheitsgruppe vor ihr bereitgestellt wird.
- Microsoft.Network/networkInterfaces. Diese Ressource ist von zwei anderen Ressourcen abhängig: der öffentlichen IP-Adresse und dem virtuellen Netzwerk.
- Microsoft.Compute/virtualMachines. Bei dem virtuellen Computer handelt es sich um die primäre Ressource, die Sie bereitstellen möchten. Sie ist von zwei verschiedenen Ressourcen abhängig: dem Speicherkonto und den Netzwerkschnittstellen.
Bereitstellen eines virtuellen Linux-Computers
Hier laden Sie eine ARM-Vorlage (Azure Resource Manager) aus einem GitHub-Repository herunter, das wir für Sie bereitstellen. Die Vorlage stellt eine Linux-VM und alle erforderlichen Ressourcen für deren Ausführung bereit.
Führen Sie den folgenden
wget
-Befehl aus, um die ARM-Vorlage herunterzuladen:wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
Wenn Sie
wget
nicht installiert haben, können Sie diesencurl
-Befehl ausführen:curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
Führen Sie den
az deployment group create
-Befehl aus, um die Vorlage bereitzustellen:az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
Die Ausführung des Befehls kann einige Minuten dauern. Wenn Sie möchten, können Sie sich die ARM-Vorlage ansehen (auf einer separaten Browserregisterkarte), während der Befehl ausgeführt wird.
Beachten Sie die Ressourcenabhängigkeiten, indem Sie nach dem
dependsOn
-Schlüssel suchen. Beispielsweise ist die VM-Ressource von der Netzwerkschnittstelle abhängig:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Überprüfen der Bereitstellung
Vergewissern Sie sich, dass die VM bereitgestellt wird und über SSH verbunden werden kann. Gehen Sie folgendermaßen vor:
Führen Sie den folgenden
az deployment group list
-Befehl aus, um die Bereitstellungsgruppen in Ihrem Abonnement aufzulisten:az deployment group list --output table
Eine Bereitstellungsgruppe mit dem Namen azuredeploy wird angezeigt:
Name ResourceGroup State Timestamp Mode ----------- ------------------------------------------ --------- -------------------------------- ----------- azuredeploy learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8 Succeeded 2020-11-24T17:55:39.762517+00:00 Incremental
Führen Sie den folgenden
az deployment group show
-Befehl aus, um den SSH-Befehl anzuzeigen, mit dem Sie eine Verbindung mit der VM herstellen können:az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
Die ARM-Vorlage definiert diese Eigenschaft im Abschnitt
output
. Hier sehen Sie ein Beispiel:ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
Führen Sie den Befehl erneut aus, und verwenden Sie dieses Mal die
$()
-Syntax, um den SSH-Befehl auszuführen:$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
Wenn Sie dazu aufgefordert werden, geben Sie
yes
ein, um die Verbindungsherstellung fortzusetzen. Geben Sie dann das Administratorkennwort ein:insecurepassword123!
.Wichtig
Wählen Sie in der Praxis sichere Kennwörter aus. Sie können auch die Authentifizierung mit öffentlichem Schlüssel verwenden, die in der Regel sicherer als die Verwendung von Kennwörtern ist.
Führen Sie
hostname
über die SSH-Verbindung mit der VM aus, um den Hostnamen der VM auszugeben:hostname
Sie sehen den internen Hostnamen
vm1
der VM:vm1
Führen Sie
exit
aus, um Ihre SSH-Sitzung zu verlassen.exit
Herzlichen Glückwunsch, Sie haben erfolgreich eine Linux-VM mithilfe einer ARM-Vorlage bereitgestellt. Eine VM ist ein allgemeiner Ressourcentyp, der abhängige Ressourcen enthält.