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 uw sjabloon opnemen in de aanvraagbody 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-01Als 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-01Zie Resourcegroepen en resources maken op abonnementsniveau voor meer informatie over implementaties op abonnementsniveau.
Als u wilt implementeren in een beheergroep, gebruikt u Deployments - Create At Management Group Scope. De aanvraag wordt verzonden naar:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Als 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-01Zie 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
Algemene parameters en headers instellen, inclusief verificatietokens.
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-01Met een aanvraagbody zoals:
{ "location": "West US", "tags": { "tagname1": "tagvalue1" } }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.
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-01Geef 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
modewaarde is ingesteld op Incrementeel. Als u een volledige implementatie wilt uitvoeren, stelt u in opmodeVoltooien. 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
debugSettingu 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 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 Azure Key Vault gebruiken om tijdens de implementatie een veilige parameterwaarde door te geven.
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": "[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" } } } }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. 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 <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. Of voeg een datumwaarde toe.
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 implementeert met de naam storage1en tegelijkertijd een andere implementatie uitvoert met de naam newStorage een opslagaccount met de naam storage2, implementeert u slechts één opslagaccount. Het resulterende opslagaccount heeft de naam storage2.
Als u echter een implementatie uitvoert die newStorage een opslagaccount implementeert met de naam storage1en onmiddellijk nadat u een andere implementatie hebt uitgevoerd met newStorage de naam een opslagaccount met de naam storage2, hebt u twee opslagaccounts. De ene heeft de naam storage1en de andere naam 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 uitvoert die newStorage1 een opslagaccount implementeert met de naam storage1en tegelijkertijd een andere implementatie uitvoert met de naam newStorage2 een opslagaccount met de naam storage2, hebt u twee opslagaccounts en twee vermeldingen in de implementatiegeschiedenis.
Als u conflicten met gelijktijdige implementaties wilt voorkomen en unieke vermeldingen in de implementatiegeschiedenis wilt garanderen, geeft u elke implementatie een unieke naam.
Volgende stappen
- Als u wilt terugkeren naar een geslaagde implementatie wanneer er een fout optreedt, raadpleegt u Terugdraaien op fout bij geslaagde implementatie.
- Als u wilt opgeven hoe resources in de resourcegroep moeten worden verwerkt, maar die niet zijn gedefinieerd in de sjabloon, raadpleegt u De implementatiemodi van Azure Resource Manager.
- Zie Asynchrone Azure-bewerkingen bijhouden voor meer informatie over het verwerken van asynchrone REST-bewerkingen.
- Zie De structuur en syntaxis van ARM-sjablonen begrijpen voor meer informatie over sjablonen.