Självstudie: Använda villkor i ARM-mallar

Lär dig hur du distribuerar Azure-resurser baserat på villkor i en Azure Resource Manager-mall (ARM-mall).

I självstudien Ange resursdistributionsordning skapar du en virtuell dator, ett virtuellt nätverk och några andra beroende resurser, däribland ett lagringskonto. I stället för att skapa ett nytt lagringskonto varje gång låter du användarna välja mellan att skapa ett nytt lagringskonto eller att använda ett befintligt. För att uppnå det här målet definierar du en extra parameter. Om värdet för parametern är nytt skapas ett nytt lagringskonto. Annars används ett befintligt lagringskonto med det angivna namnet.

Resource Manager mallens användningsvillkorsdiagram

Den här självstudien omfattar följande uppgifter:

  • Öppna en snabbstartsmall
  • Ändra mallen
  • Distribuera mallen
  • Rensa resurser

Den här självstudien beskriver bara ett grundläggande scenario med användning av villkor. Mer information finns i:

En Learn-modul som omfattar villkor finns i Hantera komplexa molndistributioner med hjälp av avancerade ARM-mallfunktioner.

Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

Förutsättningar

För att kunna följa stegen i den här artikeln behöver du:

  • Visual Studio Code med Resource Manager Tools-tillägget. Se Snabbstart: Skapa ARM-mallar med Visual Studio Code.

  • För att förbättra säkerheten bör du använda ett genererat lösenord för den virtuella datorns administratörskonto. Du kan använda Azure Cloud Shell för att köra följande kommando i PowerShell eller Bash:

    openssl rand -base64 32
    

    Om du vill veta mer kör du man openssl rand för att öppna den manuella sidan.

    Azure Key Vault är utformat för att skydda kryptografiska nycklar och andra hemligheter. Mer information finns i Självstudie: Integrera Azure Key Vault i ARM-malldistribution. Vi rekommenderar även att du uppdaterar ditt lösenord var tredje månad.

Öppna en snabbstartsmall

Azure Snabbstartsmallar är en lagringsplats för ARM-mallar. I stället för att skapa en mall från början får du en exempelmall som du anpassar. Den mall som används i den här självstudien heter Deploy a simple Windows VM (Distribuera en enkel virtuell Windows-dator).

  1. I Visual Studio Code väljer du Öppna fil>.

  2. I Filnamn klistrar du in följande URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-windows/azuredeploy.json
    
  3. Välj Öppna för att öppna filen.

  4. Det finns sex resurser som definieras av mallen:

    Det är bra att granska mallreferensen innan du anpassar en mall.

  5. VäljSpara somför> att spara en kopia av filen på din lokala dator med namnet azuredeploy.json.

Ändra mallen

Gör två ändringar av den befintliga mallen:

  • Lägg till namnparameter för lagringskonto. Användare kan ange antingen ett nytt lagringskontonamn eller ett befintligt lagringskontonamn.
  • Lägg till en ny parameter med namnet newOrExisting. Distributionen använder den här parametern för att avgöra om du vill skapa ett nytt lagringskonto eller använda ett befintligt lagringskonto.

Här följer proceduren för att göra ändringarna:

  1. Öppna azuredeploy.json i Visual Studio Code.

  2. Ersätt de tre variables('storageAccountName') med parameters('storageAccountName') i hela mallen.

  3. Ta bort följande variabeldefinition:

    Skärmbild som visar de variabeldefinitioner som du behöver ta bort.

  4. Lägg till följande två parametrar i början av avsnittet parametrar:

    "storageAccountName": {
      "type": "string"
    },
    "newOrExisting": {
      "type": "string",
      "allowedValues": [
        "new",
        "existing"
      ]
    },
    

    Tryck på Alt+Skift+F för att formatera mallen i Visual Studio Code.

    Den uppdaterade parameterdefinitionen ser ut så här:

    Resource Manager-användningsvillkor

  5. Lägg till följande rad i början av lagringskontots definition.

    "condition": "[equals(parameters('newOrExisting'),'new')]",
    

    Villkoret kontrollerar värdet för parametern newOrExisting. Om parametervärdet är new (nytt) skapar distributionen lagringskontot.

    Den uppdaterade lagringskontodefinitionen ser ut så här:

    Skärmbild som visar definitionen för det uppdaterade lagringskontot.

  6. Uppdatera egenskapen för storageUri resursdefinitionen för den virtuella datorn med följande värde:

    "storageUri": "[format('https://{0}.blob.core.windows.net', parameters('storageAccountName'))]"
    

    Den här ändringen är nödvändig när du använder ett befintligt lagringskonto under en annan resursgrupp.

  7. Spara ändringarna.

Distribuera mallen

  1. Logga in på Cloud Shell.

  2. Välj önskad miljö genom att välja Antingen PowerShell eller Bash (för CLI) i det övre vänstra hörnet. Du måste starta om gränssnittet när du byter.

    Azure Portal Cloud Shell ladda upp fil

  3. Välj Ladda upp/ned filer och välj sedan Ladda upp. Se föregående skärmbild. Välj den fil som du sparade i föregående avsnitt. När du har laddat upp filen kan du använda ls kommandot och cat kommandot för att kontrollera att filen har laddats upp.

  4. Kör följande PowerShell-skript för att distribuera mallen.

    Viktigt

    Namnet på lagringskontot måste vara unikt i Azure. Namnet får bara innehålla gemener eller siffror. Den får inte vara längre än 24 tecken. Namnet på lagringskontot är projektnamnet med lagrad . Kontrollera att projektnamnet och namnet på det genererade lagringskontot uppfyller kraven för lagringskontots namn.

    $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 ..."
    

    Anteckning

    Distributionen misslyckas om newOrExisting den är ny, men lagringskontot med det angivna lagringskontonamnet finns redan.

Prova att göra en annan distribution med newOrExisting inställd på befintlig och ange ett befintligt lagringskonto. Information om hur du skapar ett lagringskonto i förväg finns i Skapa ett lagringskonto.

Rensa resurser

När Azure-resurserna inte längre behövs rensar du de resurser som du har distribuerat genom att ta bort resursgruppen. Om du vill ta bort resursgruppen väljer du Prova för att öppna Cloud Shell. Om du vill klistra in PowerShell-skriptet högerklickar du på gränssnittsfönstret och väljer sedan Klistra in.

$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 ..."

Nästa steg

I den här självstudien utvecklade du en mall som gör att användarna kan välja mellan att skapa ett nytt lagringskonto och att använda ett befintligt lagringskonto. Om du vill lära dig hur du hämtar hemligheter från Azure Key Vault och använder hemligheterna som lösenord i malldistributionen läser du: