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.
Om du vill distribuera till en resursgrupp använder du Distributioner – Skapa. Begäran skickas till:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Om du vill distribuera till en prenumeration använder du Distributioner – Skapa vid prenumerationsomfånget. Begäran skickas till:
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Mer information om distributioner på prenumerationsnivå finns i Skapa resursgrupper och resurser på prenumerationsnivå.
Om du vill distribuera till en hanteringsgrupp använder du Distributioner – Skapa vid hanteringsgruppomfång. Begäran skickas till:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Mer information om distributioner på hanteringsgruppsnivå finns i Skapa resurser på hanteringsgruppsnivå.
Om du vill distribuera till en klientorganisation använder du Distributioner – Skapa eller uppdatera vid klientorganisationsomfånget. Begäran skickas till:
PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01Mer information om distributioner på klientorganisationsnivå finns i Skapa resurser på klientorganisationsnivå.
Exemplen i den här artikeln använder distributioner av resursgrupper.
Distribuera med REST API
Ange vanliga parametrar och rubriker,inklusive autentiseringstoken.
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-01Med en begärandetext som:
{ "location": "West US", "tags": { "tagname1": "tagvalue1" } }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.
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-01I 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 angermodedu 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,
debugSettinginkluderar 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.
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" } } } }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
- Om du vill återställa till en lyckad distribution när du får ett fel kan du se Återställning vid fel till lyckad distribution.
- Information om hur du hanterar resurser som finns i resursgruppen men som inte har definierats i mallen finns i Azure Resource Manager distributionslägen.
- Mer information om hur du hanterar asynkrona REST-åtgärder finns i Spåra asynkrona Azure-åtgärder.
- Mer information om mallar finns i Förstå strukturen och syntaxen för ARM-mallar.