Zelfstudie: Voorwaarden gebruiken in ARM-sjablonen
Leer hoe u Azure-resources kunt implementeren op basis van voorwaarden in een ARM-sjabloon (Azure Resource Manager).
In de zelfstudie Resource-implementatievolgorde instellen maakt u een virtuele machine, een virtueel netwerk en enkele andere afhankelijke resources, waaronder een opslagaccount. In plaats van elke keer een nieuw opslagaccount te maken, laat u gebruikers kiezen of ze een nieuw opslagaccount willen maken of een bestaand opslagaccount willen gebruiken. Om dit doel te bereiken, definieert u een extra parameter. Als de waarde van de parameter new is, wordt er een nieuw opslagaccount gemaakt. Anders wordt een bestaand opslagaccount met de gegeven naam gebruikt.
Deze zelfstudie bestaat uit de volgende taken:
- Een snelstartsjabloon openen
- De sjabloon aanpassen
- De sjabloon implementeren
- Resources opschonen
Deze zelfstudie behandelt alleen een basisscenario voor het gebruik van voorwaarden. Zie voor meer informatie:
- Sjabloonbestandstructuur: voorwaarde.
- Een resource voorwaardelijk implementeren in een ARM-sjabloon.
- Sjabloonfunctie: if.
- Vergelijkingsfuncties voor ARM-sjablonen
Zie Complexe cloudimplementaties beheren met behulp van geavanceerde ARM-sjabloonfuncties voor een Learn-module die voorwaarden behandelt.
Als u geen abonnement op Azure hebt, maakt u een gratis account voordat u begint.
Vereisten
Als u dit artikel wilt voltooien, hebt u het volgende nodig:
Visual Studio Code met de extensie Resource Manager Tools. Zie Quickstart: ARM-sjablonen maken met Visual Studio Code.
Gebruik een gegenereerd wachtwoord voor het beheerdersaccount van de virtuele machine om de beveiliging te verhogen. U kunt Azure Cloud Shell gebruiken om de volgende opdracht uit te voeren in PowerShell of Bash:
openssl rand -base64 32
Voer uit
man openssl rand
om de handmatige pagina te openen voor meer informatie.Azure Key Vault is ontworpen om cryptografische sleutels en andere geheimen te beveiligen. Zie Zelfstudie: Azure Key Vault integreren in ARM-sjabloonimplementatie. We raden u ook aan om uw wachtwoord elke drie maanden te wijzigen.
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).
Selecteer in Visual Studio Code Bestand>Bestand openen.
Plak de volgende URL in Bestandsnaam:
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
Selecteer Openen om het bestand te openen.
Er worden zes resources gedefinieerd met de sjabloon:
- Microsoft.Storage/storageAccounts.
- Microsoft.Network/publicIPAddresses.
- Microsoft.Network/networkSecurityGroups.
- Microsoft.Network/virtualNetworks.
- Microsoft.Network/networkInterfaces.
- Microsoft.Compute/virtualMachines.
Het is een goed idee om de sjabloonreferentie door te nemen voordat u een sjabloon aanpast.
Selecteer Bestand>Opslaan als om het bestand op uw lokale computer op te slaan als azuredeploy.json.
De sjabloon aanpassen
Breng de volgende twee wijzigingen aan in de bestaande sjabloon:
- Voeg een parameter voor de opslagaccountnaam toe. Gebruikers kunnen een nieuwe opslagaccountnaam of een bestaande opslagaccountnaam opgeven.
- Voeg een nieuwe parameter toe met de naam
newOrExisting
. De implementatie gebruikt deze parameter om te bepalen of er een nieuw opslagaccount moet worden gemaakt of dat er een bestaand opslagaccount moet worden gebruikt.
Hier volgt de procedure waarmee de wijzigingen kunnen worden aangebracht:
Open azuredeploy.json in Visual Studio Code.
Vervang de drie
variables('storageAccountName')
overal in de sjabloon doorparameters('storageAccountName')
.Verwijder de volgende variabeledefinitie:
Voeg de volgende twee parameters toe aan het begin van de parametersectie:
"storageAccountName": { "type": "string" }, "newOrExisting": { "type": "string", "allowedValues": [ "new", "existing" ] },
Druk op Alt+Shift+F om de sjabloon in Visual Studio Code in te delen.
De bijgewerkte parameterdefinitie ziet er als volgt uit:
Voeg de volgende regel toe aan het begin van de definitie van het opslagaccount.
"condition": "[equals(parameters('newOrExisting'),'new')]",
Met de voorwaarde wordt de waarde van de parameter
newOrExisting
gecontroleerd. Als de parameterwaarde new is, wordt er een opslagaccount gemaakt.De bijgewerkte definitie van het opslagaccount ziet er als volgt uit:
Werk de eigenschap
storageUri
van de resourcedefinitie van de virtuele machine bij met de volgende waarde:"storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
Deze wijziging is nodig als u een bestaand opslagaccount gebruikt onder een andere resourcegroep.
Sla de wijzigingen op.
De sjabloon implementeren
Meld u aan bij Cloud Shell.
Kies uw favoriete omgeving door in de linkerbovenhoek PowerShell of Bash (voor CLI) te selecteren. U moet de shell opnieuw starten wanneer u overschakelt.
Selecteer Upload/download files en selecteer Uploaden. Zie de vorige schermafbeelding. Selecteer het bestand dat u in de vorige sectie hebt opgeslagen. Nadat het bestand is geüpload, kunt u de opdracht
ls
en de opdrachtcat
gebruiken om te controleren of het bestand is geüpload.Gebruik het volgende PowerShell-script om de sjabloon te implementeren.
Belangrijk
De naam van het opslagaccount moet uniek zijn in Azure. De naam mag alleen kleine letters of cijfers bevatten. De naam mag niet langer zijn dan 24 tekens. De naam van het opslagaccount is de projectnaam waaraan store is toegevoegd. Zorg ervoor dat de projectnaam en de gegenereerde opslagaccountnaam voldoen aan de vereisten voor opslagaccountnamen.
$projectName = Read-Host -Prompt "Enter a project name that is used to generate resource group name and resource names" $newOrExisting = Read-Host -Prompt "Create new or use existing (Enter new or existing)" $location = Read-Host -Prompt "Enter the Azure location (i.e. centralus)" $vmAdmin = Read-Host -Prompt "Enter the admin username" $vmPassword = Read-Host -Prompt "Enter the admin password" -AsSecureString $dnsLabelPrefix = Read-Host -Prompt "Enter the DNS Label prefix" $resourceGroupName = "${projectName}rg" $storageAccountName = "${projectName}store" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment ` -ResourceGroupName $resourceGroupName ` -adminUsername $vmAdmin ` -adminPassword $vmPassword ` -dnsLabelPrefix $dnsLabelPrefix ` -storageAccountName $storageAccountName ` -newOrExisting $newOrExisting ` -TemplateFile "$HOME/azuredeploy.json" Write-Host "Press [ENTER] to continue ..."
Notitie
De implementatie mislukt als
newOrExisting
de waarde new heeft, maar het opslagaccount met de opgegeven naam al bestaat.
Maak in dit geval een andere implementatie door newOrExisting
in te stellen op existing, en de naam van een bestaand opslagaccount op te geven. Zie Een opslagaccount maken voor informatie over het vooraf maken van een opslagaccount.
Resources opschonen
Schoon de geïmplementeerd Azure-resources, wanneer u deze niet meer nodig hebt, op door de resourcegroep te verwijderen. Als u de resourcegroep wilt verwijderen, selecteert u Uitproberen om de Cloud Shell te openen. Plak het PowerShell-script door met de rechtermuisknop op het shell-venster te klikken en Plakken te selecteren.
$projectName = Read-Host -Prompt "Enter the same project name you used in the last procedure"
$resourceGroupName = "${projectName}rg"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue ..."
Volgende stappen
In deze zelfstudie hebt u een sjabloon gemaakt waarmee gebruikers kunnen kiezen tussen het maken van een nieuw opslagaccount en het gebruiken van een bestaand opslagaccount. Zie de volgende zelfstudie voor informatie over het ophalen van geheimen uit Azure Key Vault en hoe u deze geheimen als wachtwoorden gebruikt in de sjabloonimplementatie: