Delen via


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

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

U kunt uw sjabloon opnemen in de hoofdtekst van de aanvraag of een koppeling naar een bestand maken. Wanneer u een bestand gebruikt, kan het 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 de benodigde machtigingen en Microsoft.Resources/deployments/* machtigingen 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 bij 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 op abonnementsniveau voor meer informatie over implementaties op abonnementsniveau.

  • Als u wilt implementeren in een beheergroep, gebruikt u Implementaties - Bereik van beheergroep maken. 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 het niveau van de beheergroep voor meer informatie over implementaties op beheergroepniveau.

  • Als u naar een tenant wilt implementeren, 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, inclusief 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 uw 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. Wat-als valideert ook de sjabloon op fouten.

  4. Als u een sjabloon wilt implementeren, geeft u uw abonnements-id op, de naam van de resourcegroep, de naam van de implementatie 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 aanvraagtekst 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 waarde is ingesteld op Incrementeel. Als u een volledige implementatie wilt uitvoeren, stelt u in op mode Voltooien. Wees voorzichtig wanneer u de volledige modus gebruikt, 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 debugSetting u deze op 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 handtekening voor gedeelde toegang voor meer informatie.

    Als u een gevoelige waarde voor een parameter (zoals een wachtwoord) moet opgeven, voegt u die waarde toe aan een sleutelkluis. Haal de sleutelkluis op tijdens de implementatie, zoals wordt weergegeven in het vorige voorbeeld. Zie Azure Key Vault gebruiken om tijdens de implementatie een veilige parameterwaarde door te geven.

  5. In plaats van te koppelen aan bestanden voor de sjabloon en parameters, kunt u deze opnemen in de hoofdtekst van de aanvraag. 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 om de Azure Resource Manager-API aan te roepen. Als u het hulpprogramma wilt installeren, raadpleegt u ARMClient.

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 <de 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 voor meer informatie: een opdrachtregelprogramma voor de Azure-API.

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 getal toewijzen. U kunt ook een datumwaarde toevoegen.

Als u gelijktijdige implementaties uitvoert naar 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 uitvoert die newStorage een opslagaccount met de naam storage1implementeert en tegelijkertijd een andere implementatie newStorage uitvoert die een opslagaccount met de naam storage2implementeert, implementeert u slechts één opslagaccount. Het resulterende opslagaccount heeft de naam storage2.

Als u echter een implementatie uitvoert die newStorage een opslagaccount met de naam storage1implementeert en onmiddellijk nadat u een andere implementatie hebt uitgevoerd met de naam newStorage die een opslagaccount met de naam storage2implementeert, 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 gelijktijdig uitvoeren zonder conflict. Als u een implementatie newStorage1 uitvoert die een opslagaccount met de naam storage1implementeert en tegelijkertijd een andere implementatie uitvoert die newStorage2 een opslagaccount met de naam storage2implementeert, 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