Distribuera resurser med ARM-mallar och Azure Resource Manager REST API

Den här artikeln förklarar hur du använder Azure Resource Manager REST API med Azure Resource Manager -mallar (ARM-mallar) för att distribuera dina resurser till Azure.

Du kan antingen inkludera mallen i begärandetexten eller länka till en fil. När du använder en fil kan det vara en lokal fil eller en extern fil som är tillgänglig via en URI. När mallen finns i ett lagringskonto kan du begränsa åtkomsten till mallen och ange en SAS-token (signatur för delad åtkomst) under distributionen.

Distributionsomfång

Du kan rikta distributionen till en resursgrupp, Azure-prenumeration, hanteringsgrupp eller klientorganisation. Beroende på distributionens omfattning använder du olika kommandon.

Exemplen i den här artikeln använder distributioner av resursgrupper.

Distribuera med REST API

  1. Ange vanliga parametrar och rubriker,inklusive autentiseringstoken.

  2. Om du distribuerar till en resursgrupp som inte finns skapar du resursgruppen. Ange ditt prenumerations-ID, namnet på den nya resursgruppen och den plats som du behöver för din lösning. Mer information finns i Skapa en resursgrupp.

    PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2020-06-01
    

    Med en begärandetext som:

    {
     "location": "West US",
     "tags": {
       "tagname1": "tagvalue1"
     }
    }
    
  3. Innan du distribuerar mallen kan du förhandsgranska de ändringar som mallen kommer att göra i din miljö. Använd vad om-åtgärden för att kontrollera att mallen gör de ändringar som du förväntar dig. What-if validerar även mallen för fel.

  4. Om du vill distribuera en mall anger du ditt prenumerations-ID, namnet på resursgruppen och namnet på distributionen i URI:n för begäran.

    PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01
    

    I begärandetexten anger du en länk till mallen och parameterfilen. Mer information om parameterfilen finns i Skapa en parameterfil för Resource Manager.

    Observera att mode är inställt på Inkrementell. Om du vill köra en fullständig distribution anger mode du till Slutför. Var försiktig när du använder fullständigt läge eftersom du oavsiktligt kan ta bort resurser som inte finns i mallen.

    {
     "properties": {
       "templateLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
         "contentVersion": "1.0.0.0"
       },
       "parametersLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
         "contentVersion": "1.0.0.0"
       },
       "mode": "Incremental"
     }
    }
    

    Om du vill logga svarsinnehåll, begärandeinnehåll eller både och, debugSetting inkluderar du i begäran.

    {
     "properties": {
       "templateLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
         "contentVersion": "1.0.0.0"
       },
       "parametersLink": {
         "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
         "contentVersion": "1.0.0.0"
       },
       "mode": "Incremental",
       "debugSetting": {
         "detailLevel": "requestContent, responseContent"
       }
     }
    }
    

    Du kan konfigurera ditt lagringskonto att använda en SAS-token (signatur för delad åtkomst). Mer information finns i Delegera åtkomst med en signatur för delad åtkomst.

    Om du behöver ange ett känsligt värde för en parameter (till exempel ett lösenord) lägger du till det värdet i ett nyckelvalv. Hämta nyckelvalvet under distributionen, som du ser i föregående exempel. Mer information finns i Använda Azure Key Vault för att skicka säkert parametervärde under distributionen.

  5. I stället för att länka till filer för mallen och parametrarna kan du inkludera dem i begärandetexten. I följande exempel visas begärandetexten med mallen och parametern infogade:

    {
       "properties": {
       "mode": "Incremental",
       "template": {
         "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
         "contentVersion": "1.0.0.0",
         "parameters": {
           "storageAccountType": {
             "type": "string",
             "defaultValue": "Standard_LRS",
             "allowedValues": [
               "Standard_LRS",
               "Standard_GRS",
               "Standard_ZRS",
               "Premium_LRS"
             ],
             "metadata": {
               "description": "Storage Account type"
             }
           },
           "location": {
             "type": "string",
             "defaultValue": "[resourceGroup().location]",
             "metadata": {
               "description": "Location for all resources."
             }
           }
         },
         "variables": {
           "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]"
         },
         "resources": [
           {
             "type": "Microsoft.Storage/storageAccounts",
             "apiVersion": "2018-02-01",
             "name": "[variables('storageAccountName')]",
             "location": "[parameters('location')]",
             "sku": {
               "name": "[parameters('storageAccountType')]"
             },
             "kind": "StorageV2",
             "properties": {}
           }
         ],
         "outputs": {
           "storageAccountName": {
             "type": "string",
             "value": "[variables('storageAccountName')]"
           }
         }
       },
       "parameters": {
         "location": {
           "value": "eastus2"
         }
       }
     }
    }
    
  6. Om du vill hämta status för malldistributionen använder du Distributioner – Hämta.

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
    

Distributionsnamn

Du kan ge distributionen ett namn, till exempel ExampleDeployment .

Varje gång du kör en distribution läggs en post till i resursgruppens distributionshistorik med distributionsnamnet. Om du kör en annan distribution och ger den samma namn ersätts den tidigare posten med den aktuella distributionen. Om du vill behålla unika poster i distributionshistoriken ger du varje distribution ett unikt namn.

Om du vill skapa ett unikt namn kan du tilldela ett slumptal. Du kan också lägga till ett datumvärde.

Om du kör samtidiga distributioner till samma resursgrupp med samma distributionsnamn slutförs bara den senaste distributionen. Alla distributioner med samma namn som inte har slutförts ersätts av den senaste distributionen. Om du till exempel kör en distribution med namnet som distribuerar ett lagringskonto med namnet och samtidigt kör en annan distribution med namnet som distribuerar ett lagringskonto med namnet , distribuerar du bara ett newStorage storage1 newStorage storage2 lagringskonto. Det resulterande lagringskontot heter storage2 .

Men om du kör en distribution med namnet som distribuerar ett lagringskonto med namnet och omedelbart efter att den är klar kör du en annan distribution med namnet som distribuerar ett lagringskonto med namnet , så har du newStorage storage1 två newStorage storage2 lagringskonton. Den ena storage1 heter och den andra heter storage2 . Men du har bara en post i distributionshistoriken.

När du anger ett unikt namn för varje distribution kan du köra dem samtidigt utan konflikter. Om du kör en distribution med namnet som distribuerar ett lagringskonto med namnet och samtidigt kör en annan distribution med namnet som distribuerar ett lagringskonto med namnet har du två lagringskonton och två poster i newStorage1 storage1 newStorage2 storage2 distributionshistoriken.

För att undvika konflikter med samtidiga distributioner och för att säkerställa unika poster i distributionshistoriken ger du varje distribution ett unikt namn.

Nästa steg