Dela via


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, inklusive 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 och använda ett befintligt lagringskonto. För att uppnå det här målet definierar du ytterligare en parameter. Om värdet för parametern är nytt skapas ett nytt lagringskonto. Annars används ett befintligt lagringskonto med det angivna namnet.

Använd villkorsdiagram för Resource Manager-mall

Den här handledningen täcker följande uppgifter:

  • Öppna en snabbstartsmall
  • Ändra mallen
  • Använd mallen
  • Rensa resurser

I den här självstudien beskrivs endast 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 skapar du ett kostnadsfritt konto innan du börjar.

Förutsättningar

För att slutföra den här artikeln behöver du:

  • Visual Studio Code.

  • Om du vill öka säkerheten använder du ett genererat lösenord för administratörskontot för den virtuella datorn. 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 distribution av ARM-mallar. Vi rekommenderar också att du uppdaterar lösenordet 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 grunden kan du hitta en exempelmall och anpassa den. Mallen som används i den här självstudien kallas Distribuera en enkel virtuell Windows-dator.

  1. Välj Öppna fil> i Visual Studio Code.

  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 som> att spara en kopia av filen på den lokala datorn med namnet azuredeploy.json.

Ändra mallen

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

  • Lägg till en parameter för lagringskontonamn. 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 är 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 definitionen för lagringskontot.

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

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

    Definitionen för det uppdaterade lagringskontot ser ut så här:

    Skärmbild som visar definitionen av 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.

Använd 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. Det krävs att du startar om skalet när du växlar.

    Cloud Shell-uppladdningsfil i Azure-portalen

  3. Välj Ladda upp/ladda 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!

    Lagringskontots namn måste vara unikt i Hela Azure. Namnet får bara innehålla små bokstäver eller siffror. Det får inte vara längre än 24 tecken. Namnet på lagringskontot är projektnamnet med store tillagt. 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 ..."
    

    Anmärkning

    Distributionen misslyckas om newOrExisting den är ny, men lagringskontot med det angivna namnet 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 distribuerade 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 har du utvecklat en mall som gör att användarna kan välja mellan att skapa ett nytt lagringskonto och använda ett befintligt lagringskonto. Information om hur du hämtar hemligheter från Azure Key Vault och använder hemligheterna som lösenord i malldistributionen finns i: