Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come usare l'API REST di Azure Resource Manager con i modelli di Azure Resource Manager (modelli arm) per distribuire le risorse in Azure.
È possibile includere il modello nel corpo della richiesta o collegarsi a un file. Quando si usa un file, può essere un file locale o un file esterno disponibile tramite un URI. Quando il modello si trova in un account di archiviazione, è possibile limitare l'accesso al modello e fornire un token di firma di accesso condiviso durante la distribuzione.
Autorizzazioni necessarie
Per distribuire un file Bicep o un modello di ARM, è necessario l'accesso in scrittura alle risorse distribuite e l'accesso per tutte le operazioni sul tipo di risorsa Microsoft.Resources/deployments. Ad esempio, per distribuire una macchina virtuale, sono necessarie le autorizzazioni Microsoft.Compute/virtualMachines/write
e Microsoft.Resources/deployments/*
. L'operazione di simulazione ha gli stessi requisiti di autorizzazione.
Per un elenco dei ruoli e delle autorizzazioni, vedere Ruoli predefiniti di Azure.
Ambito di distribuzione
È possibile impostare come destinazione la distribuzione a un gruppo di risorse, a una sottoscrizione di Azure, a un gruppo di gestione o a un tenant. A seconda dell'ambito della distribuzione, vengono usati comandi diversi.
Per eseguire la distribuzione in un gruppo di risorse, usare Distribuzioni - Crea. La richiesta viene inviata a:
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Per eseguire la distribuzione in una sottoscrizione, utilizzare Distribuzioni - Crea a livello di sottoscrizione. La richiesta viene inviata a:
PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Per altre informazioni sulle distribuzioni a livello di sottoscrizione, vedere Creare gruppi di risorse e risorse a livello di sottoscrizione.
Per eseguire la distribuzione in un gruppo di gestione, usare Distribuzioni - Crea nell'ambito del gruppo di gestione. La richiesta viene inviata a:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{groupId}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Per altre informazioni sulle distribuzioni a livello di gruppo di gestione, vedere Creare risorse a livello di gruppo di gestione.
Per eseguire la distribuzione in un tenant, usa Distribuzioni - Crea o Aggiorna nell'ambito del tenant. La richiesta viene inviata a:
PUT https://management.azure.com/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Per altre informazioni sulle distribuzioni a livello di tenant, vedere Creare risorse a livello di tenant.
Gli esempi in questo articolo usano distribuzioni di gruppi di risorse.
Distribuire con l'API REST
Impostare parametri e intestazioni comuni, inclusi i token di autenticazione.
Se si esegue la distribuzione in un gruppo di risorse che non esiste, creare il gruppo di risorse. Specifica l'ID della sottoscrizione, il nome del nuovo gruppo di risorse e la posizione necessari per la tua soluzione. Per altre informazioni, vedere Creare un gruppo di risorse.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2020-06-01
Con un corpo della richiesta simile al seguente:
{ "location": "West US", "tags": { "tagname1": "tagvalue1" } }
Prima di distribuire il modello, è possibile visualizzare in anteprima le modifiche apportate al modello nell'ambiente. Usare l'operazione di simulazione per verificare che il modello apporti le modifiche previste. La simulazione verifica anche il modello per individuare errori.
Per distribuire un modello, specificare l'ID sottoscrizione, il nome del gruppo di risorse, il nome della distribuzione nell'URI della richiesta.
PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2020-10-01
Nel corpo della richiesta specificare un collegamento al modello e al file di parametri. Per altre informazioni sul file dei parametri, vedere Creare il file di parametri di Resource Manager.
Si noti che
mode
è impostato su Incremental. Per eseguire una distribuzione completa, impostaremode
su Completa. Prestare attenzione quando si usa la modalità completa, perché è possibile eliminare inavvertitamente le risorse che non si trovano nel modello.{ "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" } }
Se vuoi registrare il contenuto della risposta, quello della richiesta, o entrambi, includi
debugSetting
nella richiesta.{ "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" } } }
È possibile configurare l'account di archiviazione per usare un token di firma di accesso condiviso. Per ulteriori informazioni, vedi Delegating Access with a Shared Access Signature (Delega dell'accesso con una firma di accesso condiviso).
Se è necessario specificare un'informazione riservata per un parametro, ad esempio una password, aggiungere tale valore a un archivio delle chiavi. Recuperare il Key Vault durante la distribuzione, come illustrato nell'esempio precedente. Per altre informazioni, vedere Usare Azure Key Vault per passare il valore del parametro sicuro durante la distribuzione.
Anziché collegarsi ai file per il modello e i parametri, è possibile includerli nel corpo della richiesta. L'esempio seguente mostra il corpo della richiesta con il modello e il parametro 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" } } } }
Per ottenere lo stato della distribuzione del modello, usare Distribuzioni - Get.
GET https://management.azure.com/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Resources/deployments/{deploymentName}?api-version=2020-10-01
Eseguire la distribuzione con ARMClient
ARMClient è uno strumento da riga di comando semplice per richiamare l'API di Azure Resource Manager. Per installare lo strumento, vedere ARMClient.
Per elencare le sottoscrizioni:
armclient GET /subscriptions?api-version=2021-04-01
Per elencare i gruppi di risorse:
armclient GET /subscriptions/<subscription-id>/resourceGroups?api-version=2021-04-01
Sostituire <subscription-id> con l'ID sottoscrizione di Azure.
Per creare un gruppo di risorse nell'area Stati Uniti centrali :
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 "{location: 'central us', properties: {}}"
In alternativa, è possibile inserire il corpo in un file JSON denominato CreateRg.json:
{
"location": "Central US",
"properties": { }
}
armclient PUT /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>?api-version=2021-04-01 '@CreateRg.json'
Per altre informazioni, vedere ARMClient: uno strumento da riga di comando per l'API di Azure.
Nome distribuzione
È possibile assegnare alla distribuzione un nome, ExampleDeployment
ad esempio .
Ogni volta che si esegue una distribuzione, viene aggiunta una voce alla cronologia di distribuzione del gruppo di risorse con il nome della distribuzione. Se si esegue un'altra distribuzione e si assegna lo stesso nome, la voce precedente viene sostituita con la distribuzione corrente. Se si desidera mantenere voci univoche nella cronologia di distribuzione, assegnare a ogni distribuzione un nome univoco.
Per creare un nome univoco, è possibile assegnare un numero casuale. In alternativa, aggiungere un valore di data.
Se si eseguono distribuzioni simultanee nello stesso gruppo di risorse con lo stesso nome di distribuzione, viene completata solo l'ultima distribuzione. Tutte le distribuzioni con lo stesso nome che non sono state completate vengono sostituite dall'ultima distribuzione. Ad esempio, se si esegue una distribuzione denominata newStorage
che distribuisce un account di archiviazione denominato storage1
e allo stesso tempo si esegue un'altra distribuzione denominata newStorage
che distribuisce un account di archiviazione denominato storage2
, si distribuisce un solo account di archiviazione. L'account di archiviazione risultante è denominato storage2
.
Tuttavia, se si esegue una distribuzione denominata newStorage
che distribuisce un account di archiviazione denominato storage1
e subito dopo aver completato l'esecuzione di un'altra distribuzione denominata newStorage
che distribuisce un account di archiviazione denominato storage2
, si dispone di due account di archiviazione. Uno è denominato storage1
e l'altro è denominato storage2
. Tuttavia, nella cronologia della distribuzione è presente una sola voce.
Quando si specifica un nome univoco per ogni distribuzione, è possibile eseguirli simultaneamente senza conflitti. Se si esegue una distribuzione denominata newStorage1
che distribuisce un account di archiviazione denominato storage1
e allo stesso tempo si esegue un'altra distribuzione denominata newStorage2
che distribuisce un account di archiviazione denominato storage2
, sono presenti due account di archiviazione e due voci nella cronologia di distribuzione.
Per evitare conflitti con distribuzioni simultanee e per garantire voci univoche nella cronologia di distribuzione, assegnare a ogni distribuzione un nome univoco.
Passaggi successivi
- Per eseguire il rollback a una distribuzione riuscita in caso di errore, vedere Rollback in caso di errore per una distribuzione riuscita.
- Per specificare come gestire le risorse esistenti nel gruppo di risorse ma non sono definite nel modello, vedere Modalità di distribuzione di Azure Resource Manager.
- Per informazioni sulla gestione delle operazioni REST asincrone, vedere Tenere traccia delle operazioni asincrone di Azure.
- Per ulteriori informazioni sui modelli, vedere Comprendere la struttura e la sintassi dei modelli di Resource Manager (ARM).