Zelfstudie: ARM-sjablonen met afhankelijke resources maken

Leer hoe u een ARM-sjabloon (Azure Resource Manager) maakt voor het implementeren van meerdere resources en de implementatievolgorde configureert. Nadat u de sjabloon hebt gemaakt, implementeert u de sjabloon met behulp van Azure Cloud Shell vanuit de Azure Portal.

In deze zelfstudie hebt u een opslagaccount, een virtuele machine, een virtueel netwerk en enkele andere afhankelijke resources gemaakt. Sommige resources kunnen niet worden geïmplementeerd totdat er een andere resource bestaat. U kunt bijvoorbeeld niet een virtuele machine maken totdat het bijbehorende opslagaccount en de bijbehorende netwerkinterface bestaan. U definieert deze relatie door een resource afhankelijk van de andere resources te maken. Resource Manager evalueert de afhankelijkheden tussen resources en implementeert ze in de volgorde van afhankelijkheid. Als resources niet van elkaar afhankelijk zijn, worden deze door Resource Manager parallel geïmplementeerd. Zie Define the order for deploying resources in ARM templates (De volgorde voor het implementeren van resources definiëren in ARM-sjablonen) voor meer informatie.

Diagram met de implementatievolgorde van afhankelijke resources in een Resource Manager-sjabloon.

Deze zelfstudie bestaat uit de volgende taken:

  • Een snelstartsjabloon openen
  • De sjabloon verkennen
  • De sjabloon implementeren

Als u geen abonnement op Azure hebt, maakt u een gratis account voordat u begint.

Zie Complexe cloudimplementaties beheren met behulp van geavanceerde ARM-sjabloonfuncties voor een Learn-module die resourceafhankelijkheden behandelt.

Vereisten

Als u dit artikel wilt voltooien, hebt u het volgende nodig:

Een snelstartsjabloon openen

Snelstartsjablonen voor Azure is een opslagplaats voor ARM-sjablonen. In plaats van een sjabloon helemaal vanaf de basis te maken, kunt u een voorbeeldsjabloon zoeken en aanpassen. De sjabloon die in deze zelfstudie wordt gebruikt, heet Deploy a simple Windows VM (Een eenvoudige Windows-VM implementeren).

  1. Selecteer in Visual Studio Code Bestand>Bestand openen.

  2. Plak de volgende URL in Bestandsnaam:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Selecteer Openen om het bestand te openen.

  4. Selecteer Bestand>Opslaan als om het bestand op uw lokale computer op te slaan als azuredeploy.json.

De sjabloon verkennen

Wanneer u de sjabloon in deze sectie verkent, probeert u om deze vragen te beantwoorden:

  • Hoeveel Azure-resources zijn er in deze sjabloon gedefinieerd?
  • Een van de resources is een Azure-opslagaccount. Ziet de definitie eruit zoals de definitie die is gebruikt in de laatste zelfstudie?
  • Kunt u de sjabloonverwijzingen vinden voor de resources die zijn gedefinieerd in deze sjabloon?
  • Kunt u de afhankelijkheden van de resources vinden?
  1. Vouw in Visual Studio Code de elementen samen totdat u alleen de elementen op het eerste niveau en tweede niveau binnen resources ziet:

    Schermopname van Visual Studio Code met een ARM-sjabloon met samengevouwen elementen.

    Er worden zes resources gedefinieerd met de sjabloon:

  2. Vouw de eerste resource uit. Dit is een opslagaccount. Vergelijk de resourcedefinitie met de sjabloonverwijzing.

    Schermopname van Visual Studio Code met de definitie van het opslagaccount in een ARM-sjabloon.

  3. Vouw de tweede resource uit. Het resourcetype is Microsoft.Network/publicIPAddresses. Vergelijk de resourcedefinitie met de sjabloonverwijzing.

    Schermopname van Visual Studio Code met de definitie van het openbare IP-adres in een ARM-sjabloon.

  4. Vouw de derde resource uit. Het resourcetype is Microsoft.Network/networkSecurityGroups. Vergelijk de resourcedefinitie met de sjabloonverwijzing.

    Schermopname van Visual Studio Code met de definitie van de netwerkbeveiligingsgroep in een ARM-sjabloon.

  5. Vouw de vierde resource uit. Het resourcetype is Microsoft.Network/virtualNetworks:

    Schermopname van Visual Studio Code met de definitie van het virtuele netwerk met het element dependsOn in een ARM-sjabloon.

    Met het element dependsOn kunt u één resource definiëren als afhankelijk van een of meer resources. Deze resource is afhankelijk van één andere resource:

    • Microsoft.Network/networkSecurityGroups
  6. Vouw de vijfde resource uit. Het resourcetype is Microsoft.Network/networkInterfaces. De resource is afhankelijk van twee andere resources:

    • Microsoft.Network/publicIPAddresses
    • Microsoft.Network/virtualNetworks
  7. Vouw de zesde resource uit. Deze resource is een virtuele machine. Deze is afhankelijk van twee andere resources:

    • Microsoft.Storage/storageAccounts
    • Microsoft.Network/networkInterfaces

Het volgende diagram illustreert de resources en de afhankelijkheidsgegevens voor deze sjabloon:

Diagram met de afhankelijkheidsrelaties tussen resources in een ARM-sjabloon die wordt weergegeven in Visual Studio Code.

Door de afhankelijkheden op te geven, kan Resource Manager de oplossing efficiënt implementeren. Het implementeert tegelijk het opslagaccount, een openbaar IP-adres en een virtueel netwerk omdat ze geen afhankelijkheden hebben. Nadat het openbare IP-adres en het virtuele netwerk zijn geïmplementeerd, wordt de netwerkinterface gemaakt. Wanneer alle andere resources zijn geïmplementeerd, implementeert Resource Manager de virtuele machine.

De sjabloon implementeren

  1. Meld u aan bij Cloud Shell.

  2. Kies uw favoriete omgeving door in de linkerbovenhoek PowerShell of Bash (voor CLI) te selecteren. U moet de shell opnieuw starten wanneer u overschakelt.

    Schermopname van Azure Portal Cloud Shell met de optie Bestand uploaden gemarkeerd.

  3. Selecteer Upload/download files en selecteer Uploaden. Zie de vorige schermafbeelding. Selecteer het bestand dat u eerder hebt opgeslagen. Nadat het bestand is geüpload, kunt u de opdracht ls en de opdracht cat gebruiken om te controleren of het bestand is geüpload.

  4. Gebruik het volgende PowerShell-script om de sjabloon te implementeren.

    echo "Enter a project name that is used to generate resource group name:" &&
    read projectName &&
    echo "Enter the location (i.e. centralus):" &&
    read location &&
    echo "Enter the virtual machine admin username:" &&
    read adminUsername &&
    echo "Enter the DNS label prefix:" &&
    read dnsLabelPrefix &&
    resourceGroupName="${projectName}rg" &&
    az group create --name $resourceGroupName --location $location &&
    az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json" --parameters adminUsername=$adminUsername dnsLabelPrefix=$dnsLabelPrefix
    
  5. RDP voor de virtuele machine om te controleren of de virtuele machine is gemaakt.

Resources opschonen

Schoon de geïmplementeerd Azure-resources, wanneer u deze niet meer nodig hebt, op door de resourcegroep te verwijderen.

  1. Selecteer Resourcegroep in het linkermenu van Azure Portal.
  2. Voer de naam van de resourcegroep in het veld Filter by name in.
  3. Selecteer de naam van de resourcegroep. U ziet in totaal zes resources in de resourcegroep.
  4. Selecteer Resourcegroep verwijderen in het bovenste menu.

Volgende stappen

In deze zelfstudie hebt u een sjabloon ontwikkeld en geïmplementeerd voor het maken van een virtuele machine, een virtueel netwerk en de afhankelijke resources. Zie voor meer informatie over het gebruik van implementatiescripts voor het uitvoeren van pre-/postimplementatiebewerkingen: