Oefening: implementatievolgorde van resources bepalen

Voltooid

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

  1. Open Visual Studio Code.

  2. Open een terminalvenster met behulp van het menu Terminal.

  3. 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.

    Screenshot of Terminal window, terminal type.

  4. Als dat niet het geval is, selecteert u de vervolgkeuzelijst en kiest u Standaard shell selecteren.

  5. Selecteer pwsh.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. Selecteer de + in de terminal om een nieuwe terminal met pwsh als shell te maken.

Aanmelden bij Azure

  1. Voer Connect-AzAccount uit om u aan te melden bij uw account.

    Connect-AzAccount
    

    Er wordt een browservenster geopend.

  2. Selecteer het account dat u hebt gebruikt om de sandbox te activeren en sluit het browservenster wanneer hierom wordt gevraagd.

Het actieve abonnement instellen

  1. 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.

  2. 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.

  1. 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'
    
  2. 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.

  3. 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:

  1. 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.

  2. 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
    
  3. 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

  1. Open Visual Studio Code.

  2. Open een terminalvenster met behulp van het menu Terminal.

  3. Als in de vervolgkeuzelijst de shell van uw voorkeur wordt weergegeven (bijvoorbeeld bash of zsh), kunt u doorgaan naar de volgende sectie.

  4. Als dat niet het geval is, selecteert u de vervolgkeuzelijst en kiest u Standaard shell selecteren.

  5. Selecteer het gewenste type shell.

    Screenshot that shows selecting a shell from the drop-down menu.

  6. Selecteer de + in de terminal om een nieuwe terminal met het geselecteerde shelltype te maken.

Aanmelden bij Azure

  1. Voer az login uit vanaf de terminal:

    az login
    

    Er wordt een browservenster geopend.

  2. 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.

  1. 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 deze curl-opdracht uitvoeren:

    curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
    
  2. 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:

  1. 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
    
  2. 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
    
  3. 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.

  4. 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
    
  5. 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.