Övning – Styra distributionsordningen för resurser
I den här delen börjar du med att utföra lite grundläggande konfiguration. Öppna Visual Studio Code och anslut en terminalsession till Azure-prenumerationen som ingår i den kostnadsfria sandbox-miljön i Azure. På så sätt kan du autentisera kommandon till Azure.
Sedan kör du en enkel ARM-mall som etablerar en virtuell Linux-dator (VM). När distributionen är klar kontrollerar du att den virtuella datorn körs och går att ansluta till.
Även om arbete med virtuella datorer är en vanlig uppgift upptäcker du att en VM-resurs behöver nätverks- och lagringskomponenter som måste finnas innan det går att skapa den virtuella datorn. Du ser hur konstruktionen dependsOn
gör att du kan ange i vilken ordning resurserna etableras.
Ställ in
Öppna Visual Studio Code, skapa en PowerShell-session och anslut till Azure-prenumerationen som ingår i den kostnadsfria sandbox-miljön i Azure.
Du behöver bara utföra de här förberedande uppgifterna en gång under modulen. Om du skulle logga ut eller kopplas ned senare kan du gå tillbaka till de här stegen.
Öppna PowerShell i Visual Studio Code
Öppna Visual Studio Code.
Öppna ett terminalfönster via Terminal-menyn.
Om listmenyn till höger om terminalfönstret visar pwsh har du rätt gränssnitt att arbeta från och kan gå vidare till nästa avsnitt.
Annars markerar du listrutan och väljer Välj standardgränssnitt.
Välj pwsh.
Välj + i terminalen för att skapa en ny terminal med pwsh som gränssnitt.
Logga in på Azure
Kör
Connect-AzAccount
för att logga in på ditt konto.Connect-AzAccount
Ett webbläsarfönster öppnas.
Välj det konto du använde till att aktivera sandbox-miljön och stäng webbläsarfönstret när du uppmanas till det.
Ange den aktiva prenumerationen
Kör
Get-AzSubscription
för att hämta sandbox-miljöns prenumerations-ID.Get-AzSubscription
Leta efter
Concierge Subscription
och kopiera den andra kolumnen. Det ser ut ungefär som cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.Kör
Set-AzContext
för att ändra din aktiva prenumeration till Concierge Subscription.Kommentar
Kom ihåg att ersätta {Your subscription ID} med ID:t för Concierge Subscription som du hämtade med det senaste kommandot.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
Ange standardresursgruppen
När du kör ett Azure CLI-kommando måste du normalt ange en resursgrupp.
Det finns dock en standardresursgrupp i sandbox-miljön. Du kan göra följande Azure CLI-kommandon enklare att köra genom att ställa in standardresursgruppen.
Kör cmdleten Set-AzDefault
för att ställa in standardresursgruppen.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
Kommentar
När du distribuerar resurser i Azure med PowerShell behöver du normalt ange en resursgrupp. Du kringgår det här kravet genom att ange en kontext för distributionen med Set-AzDefault
.
Vad ingår i en vanlig VM-distribution
När du distribuerar en virtuell dator måste du tänka på att flera andra resurser måste distribueras tillsammans med den för att den virtuella datorn ska fungera.
Här är en kort sammanfattning av de resurser som normalt behöver distribueras tillsammans med en virtuell dator:
- Microsoft.Storage/storageAccounts. Ett lagringskonto tillhandahåller diskutrymme för operativsystem och filer.
- Microsoft.Network/publicIPAddresses. En offentlig IP-adress gör att du kan ansluta till den virtuella datorn från internet.
- Microsoft.Network/networkSecurityGroups. En nätverkssäkerhetsgrupp innehåller regler för hantering av inkommande och utgående trafik till och från det virtuella nätverket.
- Microsoft.Network/virtualNetworks. Din virtuella dator måste placeras i ett virtuellt nätverk. Nätverkssäkerhetsgruppen måste distribueras innan den här resursen.
- Microsoft.Network/networkInterfaces. Den här resursen är beroende av två andra resurser: den offentliga IP-adressen och det virtuella nätverket.
- Microsoft.Compute/virtualMachines. Den virtuella datorn är den primära resurs du vill distribuera. Den är beroende av två olika resurser: lagringskontot och nätverksgränssnitten.
Distribuera en virtuell Linux-dator
Här laddar du ned en ARM-mall från en GitHub-lagringsplats som vi tillhandahåller. Mallen etablerar en virtuell Linux-dator och alla resurser som krävs för att köra den.
Kör följande
curl
-kommando för att ladda ned ARM-mallen:curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
Kör cmdleten
ConvertTo-SecureString
och tilldela resultatet till en PowerShell-variabel med namnet$secure
:$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
Nu har du en krypterad version av lösenordet som du kan skicka via distributionsskriptet i nästa steg.
Kör kommandot
New-AzResourceGroupDeployment
för att distribuera mallen:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
Det kan ta några minuter att köra kommandot. Medan kommandot körs kan du granska ARM-mallen i en separat webbläsarflik om du vill.
Observera resursberoendena genom att söka efter nyckeln
dependsOn
. Den virtuella datorresursen är till exempel beroende av nätverksgränssnittet:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Verifiera distributionen
Kontrollera att den virtuella datorn är etablerad och går att ansluta till via SSH. Så här gör du:
Kör kommandot
Invoke-Expression
för att ansluta till den virtuella datorn via SSH:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
När du uppmanas till det anger du
yes
för att fortsätta ansluta. Ange sedan administratörslösenordet .insecurepassword123!
Viktigt!
I praktiken bör du använda säkra lösenord. Du kan också autentisera med offentlig nyckel, vilket normalt är säkrare än att använda lösenord.
Utgå från SSH-anslutningen till den virtuella datorn och kör
hostname
för att skriva ut den virtuella datorns värdnamn:hostname
Du ser den virtuella datorns interna värdnamn:
vm1
vm1
Kör
exit
för att stänga SSH-sessionen.exit
Grattis, nu har du distribuerat en virtuell Linux-dator med hjälp av en ARM-mall. En virtuell dator är en vanlig resurstyp som är beroende av andra resurser.
Ställ in
Öppna Visual Studio Code, skapa en terminalsession och anslut till Azure-prenumerationen som ingår i den kostnadsfria sandbox-miljön i Azure.
Du behöver bara utföra de här förberedande uppgifterna en gång under modulen. Om du skulle logga ut eller kopplas ned senare kan du gå tillbaka till de här stegen.
Öppna en shell-miljö i Visual Studio Code
Öppna Visual Studio Code.
Öppna ett terminalfönster via Terminal-menyn.
Om listrutan innehåller den shell-miljö du vill använda (som bash eller zsh) kan du gå vidare till nästa avsnitt.
Annars markerar du listrutan och väljer Välj standardgränssnitt.
Välj den shell-miljö du vill använda.
Välj + i terminalen för att skapa en ny terminal med önskad shell-miljö.
Logga in på Azure
Från terminalen kör
az login
:az login
Ett webbläsarfönster öppnas.
Välj det konto du använde till att aktivera sandbox-miljön och stäng webbläsarfönstret när du uppmanas till det.
Ange den aktiva prenumerationen
Kör följande az account set
-kommando för att ställa in sandbox-miljön i Azure som aktiv prenumeration:
az account set -s "Concierge Subscription"
Kommentar
Om kommandot misslyckas kör du az account list --refresh --all
och sedan az account set
-kommandot igen.
Ange standardresursgruppen
När du kör ett Azure CLI-kommando måste du normalt ange en resursgrupp.
Det finns dock en standardresursgrupp i sandbox-miljön. Du kan göra följande Azure CLI-kommandon enklare att köra genom att ställa in standardresursgruppen.
Kör följande az configure
-kommando för att ställa in standardresursgruppen:
az configure --defaults group=<rgn>resource group name</rgn>
Vad ingår i en vanlig VM-distribution
När du distribuerar en virtuell dator måste du tänka på att flera andra resurser måste distribueras tillsammans med den för att den virtuella datorn ska fungera.
Här är en kort sammanfattning av de resurser som normalt behöver distribueras tillsammans med en virtuell dator:
- Microsoft.Storage/storageAccounts. Ett lagringskonto tillhandahåller diskutrymme för operativsystem och filer.
- Microsoft.Network/publicIPAddresses. En offentlig IP-adress gör att du kan ansluta till den virtuella datorn från internet.
- Microsoft.Network/networkSecurityGroups. En nätverkssäkerhetsgrupp innehåller regler för hantering av inkommande och utgående trafik till och från det virtuella nätverket.
- Microsoft.Network/virtualNetworks. Din virtuella dator måste placeras i ett virtuellt nätverk. Nätverkssäkerhetsgruppen måste distribueras innan den här resursen.
- Microsoft.Network/networkInterfaces. Den här resursen är beroende av två andra resurser: den offentliga IP-adressen och det virtuella nätverket.
- Microsoft.Compute/virtualMachines. Den virtuella datorn är den primära resurs du vill distribuera. Den är beroende av två olika resurser: lagringskontot och nätverksgränssnitten.
Distribuera en virtuell Linux-dator
Här laddar du ned en ARM-mall från en GitHub-lagringsplats som vi tillhandahåller. Mallen etablerar en virtuell Linux-dator och alla resurser som krävs för att köra den.
Kör följande
wget
-kommando för att ladda ned ARM-mallen:wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
Om du inte har
wget
installerat kan du köra det härcurl
-kommandot:curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
Kör kommandot
az deployment group create
för att distribuera mallen:az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
Det kan ta några minuter att köra kommandot. Medan kommandot körs kan du granska ARM-mallen i en separat webbläsarflik om du vill.
Observera resursberoendena genom att söka efter nyckeln
dependsOn
. Den virtuella datorresursen är till exempel beroende av nätverksgränssnittet:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Verifiera distributionen
Kontrollera att den virtuella datorn är etablerad och går att ansluta till via SSH. Så här gör du:
Kör följande
az deployment group list
-kommando för att visa distributionsgrupperna i prenumerationen:az deployment group list --output table
Du ser en distributionsgrupp med namnet azuredeploy:
Name ResourceGroup State Timestamp Mode ----------- ------------------------------------------ --------- -------------------------------- ----------- azuredeploy learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8 Succeeded 2020-11-24T17:55:39.762517+00:00 Incremental
Kör följande
az deployment group show
-kommando för att visa SSH-kommandot du kan använda för att ansluta till den virtuella datorn:az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
ARM-mallen definierar den här egenskapen i avsnittet
output
. Här är ett exempel:ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
Kör kommandot igen och använd syntaxen
$()
för att köra SSH-kommandot:$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
När du uppmanas till det anger du
yes
för att fortsätta ansluta. Ange sedan administratörslösenordet .insecurepassword123!
Viktigt!
I praktiken bör du använda säkra lösenord. Du kan också autentisera med offentlig nyckel, vilket normalt är säkrare än att använda lösenord.
Utgå från SSH-anslutningen till den virtuella datorn och kör
hostname
för att skriva ut den virtuella datorns värdnamn:hostname
Du ser den virtuella datorns interna värdnamn:
vm1
vm1
Kör
exit
för att stänga SSH-sessionen.exit
Grattis, nu har du distribuerat en virtuell Linux-dator med hjälp av en ARM-mall. En virtuell dator är en vanlig resurstyp som är beroende av andra resurser.