Resources implementeren met ARM-sjablonen en Azure Resource Manager REST API

In dit artikel wordt uitgelegd hoe u de Azure Resource Manager REST API met Azure Resource Manager-sjablonen (ARM-sjablonen) gebruikt om uw resources in Azure te implementeren.

U kunt uw sjabloon opnemen in de aanvraag body of een koppeling naar een bestand maken. Wanneer u een bestand gebruikt, kan dit een lokaal bestand zijn of een extern bestand dat beschikbaar is via een URI. Wanneer uw sjabloon zich in een opslagaccount, kunt u de toegang tot de sjabloon beperken en een SAS-token (Shared Access Signature) leveren tijdens de implementatie.

Implementatiebereik

U kunt uw implementatie richten op een resourcegroep, Azure-abonnement, beheergroep of tenant. Afhankelijk van het bereik van de implementatie gebruikt u verschillende opdrachten.

  • Als u wilt implementeren in een resourcegroep, gebruikt u Implementaties - Maken. De aanvraag wordt verzonden naar:

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
    
  • Als u wilt implementeren in een abonnement, gebruikt u Implementaties - Maken op abonnementsbereik. De aanvraag wordt verzonden naar:

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

    Zie Resourcegroepen en resources maken op abonnementsniveau voor meer informatie over implementaties op abonnementsniveau.

  • Als u wilt implementeren in een beheergroep, gebruikt u Implementaties - Maken op beheergroepbereik. De aanvraag wordt verzonden naar:

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
    

    Zie Resources maken op beheergroepsniveau voor meer informatie over implementaties op beheergroepniveau.

  • Als u wilt implementeren in een tenant, gebruikt u Implementaties - Maken of bijwerken op tenantbereik. De aanvraag wordt verzonden naar:

    PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
    

    Zie Resources maken op tenantniveau voor meer informatie over implementaties op tenantniveau.

In de voorbeelden in dit artikel worden implementaties van resourcegroep gebruikt.

Implementeren met de REST-API

  1. Algemene parameters en headers instellen,inclusief verificatietokens.

  2. Als u implementeert naar een resourcegroep die niet bestaat, maakt u de resourcegroep. Geef uw abonnements-id, de naam van de nieuwe resourcegroep en de locatie op die u nodig hebt voor uw oplossing. Zie Een resourcegroep maken voor meer informatie.

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

    Met een aanvraag body zoals:

    {
     "location": "West US",
     "tags": {
       "tagname1": "tagvalue1"
     }
    }
    
  3. Voordat u de sjabloon implementeert, kunt u een voorbeeld bekijken van de wijzigingen die de sjabloon in uw omgeving aan zal brengen. Gebruik de what-if-bewerking om te controleren of de sjabloon de wijzigingen aan de hand heeft die u verwacht. Met Wat-als wordt de sjabloon ook gevalideerd op fouten.

  4. Als u een sjabloon wilt implementeren, geeft u uw abonnements-id, de naam van de resourcegroep en de naam van de implementatie op in de aanvraag-URI.

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

    Geef in de aanvraag body een koppeling op naar uw sjabloon en parameterbestand. Zie Een Resource Manager-parameterbestand maken voor meer informatie over het parameterbestand.

    U ziet mode dat de is ingesteld op Incrementeel. Als u een volledige implementatie wilt uitvoeren, stelt u mode in op Voltooien. Wees voorzichtig bij het gebruik van de volledige modus, omdat u per ongeluk resources kunt verwijderen die zich niet in uw sjabloon.

    {
     "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"
     }
    }
    

    Als u antwoordinhoud, aanvraaginhoud of beide wilt opnemen debugSetting in de aanvraag.

    {
     "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"
       }
     }
    }
    

    U kunt uw opslagaccount instellen voor het gebruik van een SAS-token (Shared Access Signature). Zie Toegang delegeren met een Shared Access Signature voor meer informatie.

    Als u een gevoelige waarde moet opgeven voor een parameter (zoals een wachtwoord), voegt u die waarde toe aan een sleutelkluis. Haal de sleutelkluis op tijdens de implementatie, zoals wordt weergegeven in het vorige voorbeeld. Zie Use Azure Key Vault to pass secure parameter value during deployment (Beveiligde parameterwaarde doorgeven tijdens de implementatie) voor meer informatie.

  5. In plaats van te koppelen aan bestanden voor de sjabloon en parameters, kunt u ze opnemen in de aanvraag body. In het volgende voorbeeld ziet u de aanvraag body met de sjabloon en parameter inline:

    {
       "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. Gebruik Implementaties - Get om de status van de sjabloonimplementatie op te halen.

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

Naam van implementatie

U kunt uw implementatie een naam geven, zoals ExampleDeployment .

Telkens wanneer u een implementatie hebt uitgevoerd, wordt er een vermelding toegevoegd aan de implementatiegeschiedenis van de resourcegroep met de naam van de implementatie. Als u een andere implementatie hebt uitgevoerd en deze dezelfde naam geeft, wordt de eerdere vermelding vervangen door de huidige implementatie. Als u unieke vermeldingen in de implementatiegeschiedenis wilt behouden, geeft u elke implementatie een unieke naam.

Als u een unieke naam wilt maken, kunt u een willekeurig getal toewijzen. Of voeg een datumwaarde toe.

Als u gelijktijdige implementaties naar dezelfde resourcegroep met dezelfde implementatienaam hebt uitgevoerd, wordt alleen de laatste implementatie voltooid. Implementaties met dezelfde naam die nog niet zijn voltooid, worden vervangen door de laatste implementatie. Als u bijvoorbeeld een implementatie met de naam hebt uitgevoerd die een opslagaccount met de naam implementeert en tegelijkertijd een andere implementatie met de naam die een opslagaccount met de naam implementeert, implementeert u slechts één newStorage storage1 newStorage storage2 opslagaccount. Het resulterende opslagaccount heeft de naam storage2 .

Als u echter een implementatie met de naam hebt uitgevoerd die een opslagaccount met de naam implementeert en onmiddellijk nadat het is voltooid, hebt u een andere implementatie met de naam die een opslagaccount met de naam implementeert, en hebt u twee newStorage storage1 newStorage storage2 opslagaccounts. De ene heeft storage1 de naam en de andere heeft de naam storage2 . Maar u hebt slechts één vermelding in de implementatiegeschiedenis.

Wanneer u voor elke implementatie een unieke naam opgeeft, kunt u deze gelijktijdig zonder conflicten uitvoeren. Als u een implementatie met de naam hebt uitgevoerd die een opslagaccount met de naam implementeert en tegelijkertijd een andere implementatie met de naam die een opslagaccount met de naam implementeert, hebt u twee opslagaccounts en twee vermeldingen in de newStorage1 storage1 newStorage2 storage2 implementatiegeschiedenis.

Geef elke implementatie een unieke naam om conflicten met gelijktijdige implementaties te voorkomen en unieke vermeldingen in de implementatiegeschiedenis te garanderen.

Volgende stappen

  • Zie Terugdraaien bij fout naar geslaagde implementatie als u wilt terugdraaien naar een geslaagde implementatie wanneer er een foutmelding wordt weergegeven.
  • Zie implementatiemodi voor meer informatie over het afhandelen van resources die bestaan in de resourcegroep,maar die niet zijn gedefinieerd in Azure Resource Manager sjabloon.
  • Zie Asynchrone Azure-bewerkingen bijhouden voor meer informatie over het verwerken van asynchrone REST-bewerkingen.
  • Zie Inzicht in de structuur en syntaxis van ARM-sjablonenvoor meer informatie over sjablonen.