Distribuera resurser med ARM-mallar och Azure Resource Manager REST API
Den här artikeln beskriver 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.
Behörigheter som krävs
Om du vill distribuera en Bicep-fil eller en ARM-mall måste du ha skrivåtkomst till de resurser som du distribuerar och åtkomst till alla åtgärder i resurstypen Microsoft.Resources/deployments. Om du till exempel vill distribuera en virtuell dator behöver Microsoft.Compute/virtualMachines/write
du och Microsoft.Resources/deployments/*
behörigheter. Konsekvensåtgärden har samma behörighetskrav.
Det finns en lista med roller och behörigheter i Inbyggda roller i Azure.
Distributionsomfång
Du kan rikta distributionen mot en resursgrupp, En Azure-prenumeration, en hanteringsgrupp eller en klientorganisation. Beroende på omfånget för distributionen 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-01
Om du vill distribuera till en prenumeration använder du Distributioner – Skapa vid prenumerationsomfång. Begäran skickas till:
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Mer 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 hanteringsgruppsomfång. Begäran skickas till:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Mer 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 i klientomfånget. Begäran skickas till:
PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Mer information om distributioner på klientnivå finns i Skapa resurser på klientorganisationsnivå.
Exemplen i den här artikeln använder resursgruppsdistributioner.
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-01
Med 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 konsekvenså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, namnet på distributionen i begärande-URI:n.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01
I 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 är inställt på
mode
Inkrementell. Om du vill köra en fullständig distribution anger dumode
till Slutför. Var försiktig när du använder det fullständiga läget 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ära innehåll eller båda, inkludera
debugSetting
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 lagringskontot så att det använder 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 enligt 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 infogad:
{ "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" } } } }
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
Distribuera med ARMClient
ARMClient är ett enkelt kommandoradsverktyg för att anropa Azure Resource Manager-API:et. Information om hur du installerar verktyget finns i ARMClient.
Så här listar du dina prenumerationer:
armclient GET /subscriptions?api-version=2021-04-01
Så här listar du dina resursgrupper:
armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01
Ersätt <prenumerations-ID> med ditt Azure-prenumerations-ID.
Så här skapar du en resursgrupp i regionen USA , centrala:
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 "{location: 'central us', properties: {}}"
Du kan också placera brödtexten i en JSON-fil med namnet CreateRg.json:
{
"location": "Central US",
"properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'
Mer information finns i ARMClient: ett kommandoradsverktyg för Azure API.
Distributionsnamnet
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. Eller lägg till ett datumvärde.
Om du kör samtidiga distributioner till samma resursgrupp med samma distributionsnamn slutförs endast 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 newStorage
som distribuerar ett lagringskonto med namnet storage1
och samtidigt kör en annan distribution med namnet newStorage
som distribuerar ett lagringskonto med namnet storage2
distribuerar du bara ett lagringskonto. Det resulterande lagringskontot heter storage2
.
Men om du kör en distribution med namnet newStorage
som distribuerar ett lagringskonto med namnet storage1
och omedelbart efter att den har slutförts kör du en annan distribution med namnet newStorage
som distribuerar ett lagringskonto med namnet storage2
, så har du två lagringskonton. Den ena heter storage1
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 newStorage1
som distribuerar ett lagringskonto med namnet storage1
och samtidigt kör en annan distribution med namnet newStorage2
som distribuerar ett lagringskonto med namnet storage2
, har du två lagringskonton och två poster i 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
- Information om hur du återställer till en lyckad distribution när du får ett fel finns i Återställning vid fel vid lyckad distribution.
- Information om hur du hanterar resurser som finns i resursgruppen men som inte har definierats i mallen finns i Distributionslägen för Azure Resource Manager.
- 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.