Oefening: implementatievolgorde van resources bepalen
In dit gedeelte begint u met het uitvoeren van enkele eenvoudige installatietaken. In Visual Studio Code koppelt u een terminalsessie aan het Azure-abonnement dat wordt verstrekt door de gratis Azure-sandboxomgeving. Op die manier kunt u opdrachten voor Azure verifiëren.
Vervolgens voert u een eenvoudige ARM-sjabloon uit waarmee een virtuele Linux-machine (VM) wordt ingericht. Nadat de implementatie is voltooid, controleert u of de VM actief is en er verbinding mee kan worden gemaakt.
Hoewel het werken met VM's een veelvoorkomende taak is, zult u ontdekken dat voor een VM-resource netwerk- en opslagonderdelen vereist zijn die aanwezig moeten zijn voordat de VM kan worden gemaakt. U ziet hoe u met de dependsOn
constructie de volgorde kunt instellen waarin resources worden ingericht.
Instellingen
Hier opent u Visual Studio Code, maakt u een PowerShell-sessie en koppelt u deze aan het Azure-abonnement dat wordt verstrekt door de gratis Azure-sandboxomgeving.
U moet deze installatietaken tijdens deze module één keer uitvoeren. Als u zich bij een latere oefening afmeldt of de verbinding verbreekt, kunt u teruggaan naar deze stappen.
PowerShell openen in Visual Studio Code
Open Visual Studio Code.
Open een terminalvenster met behulp van het menu Terminal.
Als in het vervolgkeuzemenu aan de rechterkant van het terminalvenster pwsh wordt vermeld, hebt u de juiste shell om vanuit te werken en kunt u doorgaan naar de volgende sectie.
Als dat niet het geval is, selecteert u de vervolgkeuzelijst en kiest u Standaard shell selecteren.
Selecteer pwsh.
Selecteer de + in de terminal om een nieuwe terminal met pwsh als shell te maken.
Aanmelden bij Azure
Voer
Connect-AzAccount
uit om u aan te melden bij uw account.Connect-AzAccount
Er wordt een browservenster geopend.
Selecteer het account dat u hebt gebruikt om de sandbox te activeren en sluit het browservenster wanneer hierom wordt gevraagd.
Het actieve abonnement instellen
Voer
Get-AzSubscription
uit om de abonnements-id voor de sandboxomgeving op te halen.Get-AzSubscription
Zoek naar
Concierge Subscription
en kopieer de tweede kolom. Het ziet er ongeveer uit als cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.Voer
Set-AzContext
uit om uw actieve abonnement te wijzigen naar het Concierge-abonnement.Notitie
Vervang {uw abonnements-id} door de id van het Concierge-abonnement dat u zojuist hebt ontvangen bij de laatste opdracht.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
Standaardresourcegroep instellen
Wanneer u een Azure CLI-opdracht uitvoert, moet u normaal gesproken een resourcegroep opgeven.
Dankzij de sandbox beschikt u over een resourcegroep. Als u de Azure CLI-opdrachten die volgen, eenvoudiger wilt kunnen uitvoeren, kunt u hier de standaardresourcegroep instellen.
Voer de cmdlet Set-AzDefault
uit om de standaardresourcegroep in te stellen.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
Notitie
Wanneer u PowerShell gebruikt om een resource in Azure te implementeren, moet u normaal gesproken een resourcegroep opgeven. U kunt deze vereiste omzeilen door de context van de implementatie in te stellen met behulp van Set-AzDefault
.
Wat behelst een typische VM-implementatie?
Wanneer u een VM implementeert, moet u er rekening mee houdt dat er tevens een aantal resources moeten worden geïmplementeerd, zodat de VM kan functioneren.
Hier volgt een korte samenvatting van de typen resources die meestal samen met een VM moeten worden geïmplementeerd:
- Microsoft.Storage/storageAccounts. Een opslagaccount biedt schijfruimte voor het besturingssysteem en de bestanden.
- Microsoft.Network/publicIPAddresses. Met een openbaar IP-adres kunt u via internet verbinding maken met de VM.
- Microsoft.Network/networkSecurityGroups. Een netwerkbeveiligingsgroep bevat regels voor het verwerken van inkomend en uitgaand verkeer naar uw virtuele netwerk.
- Microsoft.Network/virtualNetworks. De VM moet in een virtueel netwerk worden geplaatst. Voor deze resource moet eerst de netwerkbeveiligingsgroep worden geïmplementeerd.
- Microsoft.Network/networkInterfaces. Deze resource is afhankelijk van twee andere resources: het openbare IP-adres en het virtuele netwerk.
- Microsoft.Compute/virtualMachines. De virtuele machine is de primaire resource die u wilt implementeren. Deze is afhankelijk van twee verschillende resources: het opslagaccount en de netwerkinterfaces.
Een Linux-VM implementeren
Hier downloadt u een ARM-sjabloon in een GitHub-opslagplaats. Met de sjabloon wordt een virtuele Linux-machine ingericht en tevens alle resources die nodig zijn om deze uit te voeren.
Voer de volgende
curl
-opdracht uit om de ARM-sjabloon te downloaden:curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
Voer de cmdlet
ConvertTo-SecureString
uit en wijs de resultaten toe aan een PowerShell-variabele met de naam$secure
:$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
U beschikt nu over een versleutelde versie van uw wachtwoord. U kunt deze vervolgens aan het implementatiescript doorgeven.
Voer de
New-AzResourceGroupDeployment
-opdracht uit om de sjabloon te implementeren:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
Het uitvoeren van de opdracht kan enkele minuten duren. Terwijl de opdracht wordt uitgevoerd, kunt u desgewenst de ARM-sjabloon bekijken via een afzonderlijk browsertabblad.
Noteer de resourceafhankelijkheden door naar de
dependsOn
-sleutel te zoeken. Zo is bijvoorbeeld de virtuele-machineresource afhankelijk van de netwerkinterface:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
De implementatie controleren
Controleer of de VM is ingericht en of deze via SSH kan worden aangesloten. Hiervoor doet u het volgende:
Voer de opdracht
Invoke-Expression
uit om via SSH verbinding te maken met de VM:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
Voer desgevraagd in
yes
om door te gaan met verbinding maken. Voer vervolgens het beheerderswachtwoord in.insecurepassword123!
Belangrijk
In het echt moet u wachtwoorden natuurlijk veilig bewaren. U kunt ook verificatie op basis van openbare sleutels gebruiken, dat meestal veiliger is dan het gebruik van wachtwoorden.
Voer
hostname
uit vanaf uw SSH-verbinding naar de virtuele machine uit om de hostnaam van de VM af te drukken:hostname
U ziet de interne hostnaam van de virtuele machine:
vm1
vm1
Voer
exit
uit om uw SSH-sessie te verlaten.exit
Gefeliciteerd, u hebt een virtuele Linux-machine geïmplementeerd met behulp van een ARM-sjabloon. Een VM is een gemeenschappelijk resourcetype dat afhankelijke resources bevat.
Instellingen
Hier opent u Visual Studio Code, maakt u een terminalsessie en koppelt u deze aan het Azure-abonnement dat wordt verstrekt door de gratis Azure-sandboxomgeving.
U moet deze installatietaken tijdens deze module één keer uitvoeren. Als u zich bij een latere oefening afmeldt of de verbinding verbreekt, kunt u teruggaan naar deze stappen.
Een shell openen in Visual Studio Code
Open Visual Studio Code.
Open een terminalvenster met behulp van het menu Terminal.
Als in de vervolgkeuzelijst de shell van uw voorkeur wordt weergegeven (bijvoorbeeld bash of zsh), kunt u doorgaan naar de volgende sectie.
Als dat niet het geval is, selecteert u de vervolgkeuzelijst en kiest u Standaard shell selecteren.
Selecteer het gewenste type shell.
Selecteer de + in de terminal om een nieuwe terminal met het geselecteerde shelltype te maken.
Aanmelden bij Azure
Voer
az login
uit vanaf de terminal:az login
Er wordt een browservenster geopend.
Selecteer het account dat u hebt gebruikt om de sandbox te activeren en sluit het browservenster wanneer hierom wordt gevraagd.
Het actieve abonnement instellen
Voer de volgende az account set
-opdracht uit om de Azure-sandboxomgeving in te stellen als uw actieve abonnement:
az account set -s "Concierge Subscription"
Notitie
Als de opdracht mislukt, voert u az account list --refresh --all
uit en voert u de az account set
-opdracht opnieuw uit.
De standaardresourcegroep instellen
Wanneer u een Azure CLI-opdracht uitvoert, moet u normaal gesproken een resourcegroep opgeven.
Dankzij de sandbox beschikt u over een resourcegroep. Als u de Azure CLI-opdrachten die volgen, eenvoudiger wilt kunnen uitvoeren, kunt u hier de standaardresourcegroep instellen.
Voer de volgende az configure
-opdracht uit om de standaardresourcegroep in te stellen:
az configure --defaults group=<rgn>resource group name</rgn>
Wat behelst een typische VM-implementatie?
Wanneer u een VM implementeert, moet u er rekening mee houdt dat er tevens een aantal resources moeten worden geïmplementeerd, zodat de VM kan functioneren.
Hier volgt een korte samenvatting van de typen resources die meestal samen met een VM moeten worden geïmplementeerd:
- Microsoft.Storage/storageAccounts. Een opslagaccount biedt schijfruimte voor het besturingssysteem en de bestanden.
- Microsoft.Network/publicIPAddresses. Met een openbaar IP-adres kunt u via internet verbinding maken met de VM.
- Microsoft.Network/networkSecurityGroups. Een netwerkbeveiligingsgroep bevat regels voor het verwerken van inkomend en uitgaand verkeer naar uw virtuele netwerk.
- Microsoft.Network/virtualNetworks. De VM moet in een virtueel netwerk worden geplaatst. Voor deze resource moet eerst de netwerkbeveiligingsgroep worden geïmplementeerd.
- Microsoft.Network/networkInterfaces. Deze resource is afhankelijk van twee andere resources: het openbare IP-adres en het virtuele netwerk.
- Microsoft.Compute/virtualMachines. De virtuele machine is de primaire resource die u wilt implementeren. Deze is afhankelijk van twee verschillende resources: het opslagaccount en de netwerkinterfaces.
Een Linux-VM implementeren
Hier downloadt u een Azure Resource Manager-sjabloon (ARM) in een GitHub-opslagplaats. Met de sjabloon wordt een virtuele Linux-machine ingericht en tevens alle resources die nodig zijn om deze uit te voeren.
Voer de volgende
wget
-opdracht uit om de ARM-sjabloon te downloaden:wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
Als
wget
niet is geïnstalleerd, kunt u dezecurl
-opdracht uitvoeren:curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
Voer de
az deployment group create
-opdracht uit om de sjabloon te implementeren:az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
Het uitvoeren van de opdracht kan enkele minuten duren. Terwijl de opdracht wordt uitgevoerd, kunt u desgewenst de ARM-sjabloon bekijken via een afzonderlijk browsertabblad.
Noteer de resourceafhankelijkheden door naar de
dependsOn
-sleutel te zoeken. Zo is bijvoorbeeld de virtuele-machineresource afhankelijk van de netwerkinterface:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
De implementatie controleren
Controleer of de VM is ingericht en of deze via SSH kan worden aangesloten. Hiervoor doet u het volgende:
Voer de volgende
az deployment group list
-opdracht uit om de implementatiegroepen in uw abonnement te vermelden:az deployment group list --output table
U ziet één implementatie groep met de naam azuredeploy:
Name ResourceGroup State Timestamp Mode ----------- ------------------------------------------ --------- -------------------------------- ----------- azuredeploy learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8 Succeeded 2020-11-24T17:55:39.762517+00:00 Incremental
Voer de volgende
az deployment group show
-opdracht uit om de SSH-opdracht weer te geven die u kunt gebruiken om verbinding te maken met de VM:az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
Met de ARM-sjabloon wordt deze eigenschap in de sectie
output
gedefinieerd. Hier volgt een voorbeeld:ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
Voer de opdracht opnieuw uit. Deze keer gebruikt u de syntaxis
$()
om de SSH-opdracht uit te voeren:$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
Voer desgevraagd in
yes
om door te gaan met verbinding maken. Voer vervolgens het beheerderswachtwoord in.insecurepassword123!
Belangrijk
In het echt moet u wachtwoorden natuurlijk veilig bewaren. U kunt ook verificatie op basis van openbare sleutels gebruiken, dat meestal veiliger is dan het gebruik van wachtwoorden.
Voer
hostname
uit vanaf uw SSH-verbinding naar de virtuele machine uit om de hostnaam van de VM af te drukken:hostname
U ziet de interne hostnaam van de virtuele machine:
vm1
vm1
Voer
exit
uit om uw SSH-sessie te verlaten.exit
Gefeliciteerd, u hebt een virtuele Linux-machine geïmplementeerd met behulp van een ARM-sjabloon. Een VM is een gemeenschappelijk resourcetype dat afhankelijke resources bevat.