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

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

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

Vereiste machtigingen

Als u een Bicep-bestand of ARM-sjabloon wilt implementeren, hebt u schrijftoegang nodig voor de resources die u implementeert en moet u zijn gemachtigd om alle bewerkingen op het resourcetype Microsoft.Resources/deployments te kunnen uitvoeren. Als u bijvoorbeeld een virtuele machine wilt implementeren, hebt u machtigingen en Microsoft.Resources/deployments/* nodigMicrosoft.Compute/virtualMachines/write. De wat-als-bewerking heeft dezelfde machtigingsvereisten.

Zie Ingebouwde Azure-rollen voor een lijst met rollen en machtigingen.

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 bereik van beheergroep. 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 beheergroepsniveau.

  • 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 resourcegroepimplementaties gebruikt.

Implementeren met de REST-API

  1. Algemene parameters en headers instellen, waaronder verificatietokens.

  2. Als u implementeert in 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 aanvraagbody 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 aanbrengt. Gebruik de wat-als-bewerking om te controleren of de sjabloon de verwachte wijzigingen aanbrengt. What-if valideert ook de sjabloon 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 aanvraagbody een koppeling op naar uw sjabloon en parameterbestand. Zie Een Resource Manager-parameterbestand maken voor meer informatie over het parameterbestand.

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

    {
     "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 vastleggen, neemt u op 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 weergegeven in het vorige voorbeeld. Zie Azure Key Vault gebruiken om een beveiligde parameterwaarde door te geven tijdens de implementatie voor meer informatie.

  5. In plaats van een koppeling te maken naar bestanden voor de sjabloon en parameters, kunt u deze opnemen in de aanvraagbody. In het volgende voorbeeld ziet u de aanvraagbody 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": "[format('{0}standardsa', uniquestring(resourceGroup().id))]"
         },
         "resources": [
           {
             "type": "Microsoft.Storage/storageAccounts",
             "apiVersion": "2022-09-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 - Ophalen 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
    

Implementeren met ARMClient

ARMClient is een eenvoudig opdrachtregelprogramma voor het aanroepen van de Azure Resource Manager-API. Zie ARMClient om het hulpprogramma te installeren.

Ga als volgende te werk om uw abonnementen weer te geven:

armclient GET /subscriptions?api-version=2021-04-01

Ga als volgende te werk om uw resourcegroepen weer te geven:

armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01

Vervang abonnements-id> door< uw Azure-abonnements-id.

Een resourcegroep maken in de regio VS - centraal :

armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01  "{location: 'central us', properties: {}}"

U kunt de hoofdtekst ook in een JSON-bestand plaatsen met de naam CreateRg.json:

{
  "location": "Central US",
  "properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'

Zie ARMClient: een opdrachtregelprogramma voor de Azure-API voor meer informatie.

Naam van implementatie

U kunt uw implementatie een naam geven, zoals ExampleDeployment.

Telkens wanneer u een implementatie uitvoert, wordt er een vermelding toegevoegd aan de implementatiegeschiedenis van de resourcegroep met de implementatienaam. Als u een andere implementatie uitvoert 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 nummer toewijzen. U kunt ook een datumwaarde toevoegen.

Als u gelijktijdige implementaties uitvoert in dezelfde resourcegroep met dezelfde implementatienaam, 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 newStorage uitvoert waarmee een opslagaccount met de naam storage1wordt geïmplementeerd en tegelijkertijd een andere implementatie met de naam newStorage uitvoert waarmee een opslagaccount met de naam storage2wordt geïmplementeerd, implementeert u slechts één opslagaccount. Het resulterende opslagaccount heet storage2.

Als u echter een implementatie met de naam newStorage uitvoert waarmee een opslagaccount met de naam storage1wordt geïmplementeerd en u onmiddellijk nadat dit is voltooid, een andere implementatie uitvoert met de naam newStorage waarmee een opslagaccount met de naam storage2wordt geïmplementeerd, hebt u twee opslagaccounts. De ene heet storage1en de andere heet storage2. Maar u hebt slechts één vermelding in de implementatiegeschiedenis.

Wanneer u een unieke naam opgeeft voor elke implementatie, kunt u deze zonder conflict gelijktijdig uitvoeren. Als u een implementatie met de naam newStorage1 uitvoert die een opslagaccount met de naam storage1implementeert en tegelijkertijd een andere implementatie met de naam newStorage2 uitvoert waarmee een opslagaccount met de naam storage2wordt geïmplementeerd, hebt u twee opslagaccounts en twee vermeldingen in de implementatiegeschiedenis.

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

Volgende stappen