Share via


Självstudie: Använda parameterfiler för att distribuera ARM-mallen

I den här självstudien får du lära dig hur du använder parameterfiler för att lagra de värden som du skickar under distributionen. I de föregående självstudierna använde du infogade parametrar med distributionskommandot. Den här metoden fungerade för att testa din Azure Resource Manager-mall (ARM-mall), men när du automatiserar distributioner kan det vara enklare att skicka en uppsättning värden för din miljö. Parameterfiler gör det enklare att paketera parametervärden för en specifik miljö. I den här självstudien skapar du parameterfiler för utvecklings- och produktionsmiljöer. Den här instruktionen tar 12 minuter att slutföra.

Förutsättningar

Vi rekommenderar att du slutför självstudien om taggar, men det krävs inte.

Du måste ha Visual Studio Code med tillägget Resource Manager Tools och antingen Azure PowerShell eller Azure Command-Line Interface (CLI). Mer information finns i mallverktyg.

Granska mall

Mallen har många parametrar som du kan ange under distributionen. I slutet av den föregående självstudien hade mallen följande JSON-fil:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "appServicePlanName": {
      "type": "string",
      "defaultValue": "exampleplan"
    },
    "webAppName": {
      "type": "string",
      "metadata": {
        "description": "Base name of the resource such as web app name and app service plan "
      },
      "minLength": 2
    },
    "linuxFxVersion": {
      "type": "string",
      "defaultValue": "php|7.0",
      "metadata": {
        "description": "The Runtime stack of current web app"
      }
    },
    "resourceTags": {
      "type": "object",
      "defaultValue": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
    "webAppPortalName": "[concat(parameters('webAppName'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    },
    {
      "type": "Microsoft.Web/serverfarms",
      "apiVersion": "2021-03-01",
      "name": "[parameters('appServicePlanName')]",
      "location": "[parameters('location')]",
      "tags": "[parameters('resourceTags')]",
      "sku": {
        "name": "B1",
        "tier": "Basic",
        "size": "B1",
        "family": "B",
        "capacity": 1
      },
      "kind": "linux",
      "properties": {
        "perSiteScaling": false,
        "reserved": true,
        "targetWorkerCount": 0,
        "targetWorkerSizeId": 0
      }
    },
    {
      "type": "Microsoft.Web/sites",
      "apiVersion": "2021-03-01",
      "name": "[variables('webAppPortalName')]",
      "location": "[parameters('location')]",
      "dependsOn": [
        "[parameters('appServicePlanName')]"
      ],
      "tags": "[parameters('resourceTags')]",
      "kind": "app",
      "properties": {
        "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
        "siteConfig": {
          "linuxFxVersion": "[parameters('linuxFxVersion')]"
        }
      }
    }
  ],
  "outputs": {
    "storageEndpoint": {
      "type": "object",
      "value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
    }
  }
}

Den här mallen fungerar bra, men nu vill du enkelt hantera de parametrar som du skickar in för mallen.

Lägga till parameterfiler

Parameterfiler är JSON-filer med en struktur som liknar din mall. I filen anger du de parametervärden som du vill skicka in under distributionen.

I parameterfilen anger du värden för parametrarna i mallen. Namnet på varje parameter i parameterfilen måste matcha namnet på en parameter i mallen. Namnet är skiftlägesokänsligt, men för att enkelt se matchande värden rekommenderar vi att du matchar höljet från mallen.

Du behöver inte ange något värde för varje parameter. Om en ospecificerad parameter har ett standardvärde används det värdet under distributionen. Om en parameter inte har något standardvärde och inte anges i parameterfilen uppmanas du att ange ett värde under distributionen.

Du kan inte ange ett parameternamn i parameterfilen som inte matchar ett parameternamn i mallen. Du får ett fel när du anger okända parametrar.

I Visual Studio Code skapar du en ny fil med följande innehåll. Spara filen med namnet azuredeploy.parameters.dev.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "devstore"
    },
    "storageSKU": {
      "value": "Standard_LRS"
    },
    "appServicePlanName": {
      "value": "devplan"
    },
    "webAppName": {
      "value": "devapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Dev",
        "Project": "Tutorial"
      }
    }
  }
}

Den här filen är parameterfilen för utvecklingsmiljön. Observera att den använder Standard_LRS för lagringskontot, namnger resurser med ett dev-prefix och anger taggen Environment till Dev.

Skapa återigen en ny fil med följande innehåll. Spara filen med namnet azuredeploy.parameters.prod.json.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": "contosodata"
    },
    "storageSKU": {
      "value": "Standard_GRS"
    },
    "appServicePlanName": {
      "value": "contosoplan"
    },
    "webAppName": {
      "value": "contosowebapp"
    },
    "resourceTags": {
      "value": {
        "Environment": "Production",
        "Project": "Tutorial"
      }
    }
  }
}

Den här filen är parameterfilen för produktionsmiljön. Observera att den använder Standard_GRS för lagringskontot, namnger resurser med ett contoso-prefix och anger taggen Environment till Produktion. I en verklig produktionsmiljö vill du också använda en apptjänst med en annan SKU än kostnadsfri, men vi använder den SKU:n för den här självstudien.

Distribuera mallen

Använd antingen Azure CLI eller Azure PowerShell för att distribuera mallen.

Som ett sista test av mallen ska vi skapa två nya resursgrupper. En för utvecklingsmiljön och en för produktionsmiljön.

För mall- och parametervariablerna ersätter {path-to-the-template-file}du , {path-to-azuredeploy.parameters.dev.json}, {path-to-azuredeploy.parameters.prod.json}och klammerparenteser {} med dina mall- och parameterfilsökvägar.

Först ska vi distribuera till utvecklingsmiljön.

$templateFile = "{path-to-the-template-file}"
$parameterFile="{path-to-azuredeploy.parameters.dev.json}"
New-AzResourceGroup `
  -Name myResourceGroupDev `
  -Location "East US"
New-AzResourceGroupDeployment `
  -Name devenvironment `
  -ResourceGroupName myResourceGroupDev `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Nu distribuerar vi till produktionsmiljön.

$parameterFile="{path-to-azuredeploy.parameters.prod.json}"
New-AzResourceGroup `
  -Name myResourceGroupProd `
  -Location "West US"
New-AzResourceGroupDeployment `
  -Name prodenvironment `
  -ResourceGroupName myResourceGroupProd `
  -TemplateFile $templateFile `
  -TemplateParameterFile $parameterFile

Anteckning

Om distributionen misslyckas använder du växeln verbose för att hämta information om de resurser som du skapar. Använd växeln debug för att få mer information om felsökning.

Verifiera distributionen

Du kan verifiera distributionen genom att utforska resursgrupperna från Azure Portal.

  1. Logga in på Azure-portalen.
  2. Välj Resursgrupper på den vänstra menyn.
  3. Du ser de två nya resursgrupperna som du distribuerar i den här självstudien.
  4. Välj någon av resursgrupperna och visa de distribuerade resurserna. Observera att de matchar de värden som du angav i parameterfilen för den miljön.

Rensa resurser

  1. I Azure Portal väljer du Resursgrupper på den vänstra menyn.

  2. Markera namnet på den hyperlänkade resursgruppen bredvid kryssrutan. Om du slutför den här serien har du tre resursgrupper att ta bort – myResourceGroup, myResourceGroupDev och myResourceGroupProd.

  3. Välj ikonen Ta bort resursgrupp på den översta menyn.

    Varning

    Att ta bort en resursgrupp kan inte ångras.

  4. Skriv resursgruppens namn i popup-fönstret som visar och välj Ta bort.

Nästa steg

Grattis! Du har slutfört den här introduktionen till att distribuera mallar till Azure. Meddela oss om du har några kommentarer och förslag i feedbackavsnittet.

Nästa självstudieserie innehåller mer information om hur du distribuerar mallar.