Distribuire le risorse con i modelli e l'API REST di Resource Manager

In questo articolo viene illustrato come utilizzare l'API REST di Resource Manager con i modelli di Resource Manager per distribuire le risorse in Azure.

Suggerimento

Per informazioni su come eseguire il debug di un errore durante la distribuzione, vedere:

Il modello può essere un file locale oppure 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 in fase di distribuzione.

Distribuzioni incrementali e complete

Quando si distribuiscono le risorse, specificare se la distribuzione è un aggiornamento incrementale o completo. La differenza principale tra le due modalità è il modo in cui Resource Manager gestisce le risorse esistenti nel gruppo di risorse che non sono presenti nel modello:

  • Nella modalità di completamento, Resource Manager elimina le risorse esistenti nel gruppo di risorse che non sono specificate nel modello.
  • Nella modalità incrementale, Resource Manager lascia invariate le risorse esistenti nel gruppo di risorse che non sono specificate nel modello.

Per entrambe le modalità, Resource Manager prova a effettuare il provisioning di tutte le risorse specificate nel modello. Se la risorsa esiste già nel gruppo di risorse e le relative impostazioni sono identiche, l'operazione non comporta alcuna modifica. Se si modificano le impostazioni per una risorsa, il provisioning viene effettuato con le nuove impostazioni della risorsa. Se si prova ad aggiornare il percorso o il tipo di una risorsa esistente, la distribuzione ha esito negativo e restituisce un errore. È invece necessario distribuire una nuova risorsa con il percorso o il tipo necessari.

Per impostazione predefinita, Resource Manager usa la modalità incrementale.

Per illustrare la differenza tra le modalità incrementale e completa, si consideri lo scenario seguente.

Il gruppo di risorse esistente contiene:

  • Risorsa A
  • Risorsa B
  • Risorsa C

Il modello definisce:

  • Risorsa A
  • Risorsa B
  • Risorsa D

Quando viene implementato in modalità incrementale, il gruppo di risorse contiene:

  • Risorsa A
  • Risorsa B
  • Risorsa C
  • Risorsa D

Quando viene implementato in modalità completa, la risorsa C viene eliminata. Il gruppo di risorse contiene:

  • Risorsa A
  • Risorsa B
  • Risorsa D

Distribuire con l'API REST

  1. Impostare parametri e intestazioni comuni, tra cui i token di autenticazione.
  2. Se non è già disponibile un gruppo di risorse, crearne uno. Specificare l'ID sottoscrizione, il nome del nuovo gruppo di risorse e il percorso per la soluzione. Per ulteriori informazioni, vedere Create a resource group (Creare un gruppo di risorse).

     PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>?api-version=2015-01-01
       <common headers>
       {
         "location": "West US",
         "tags": {
            "tagname1": "tagvalue1"
         }
       }
    
  3. Convalidare la distribuzione prima dell'esecuzione eseguendo l'operazione di convalida della distribuzione di un modello . Durante il test della distribuzione, specificare i parametri esattamente come quando si esegue la distribuzione (illustrata nel passaggio successivo).
  4. Creare una distribuzione. Fornire l'ID sottoscrizione, il nome del gruppo di risorse, il nome della distribuzione e un collegamento al modello. Per informazioni sul file di modello, vedere File di parametri. Per altre informazioni sull'API REST per creare un gruppo di risorse, vedere Create a template deployment (Creare la distribuzione di un modello). Si noti che la modalità è impostata su Incrementale. Per eseguire una distribuzione completa, impostare mode su Complete (Completo). Quando si utilizza la modalità di completamento, fare attenzione a non eliminare inavvertitamente le risorse non presenti nel modello.

     PUT https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2015-01-01
       <common headers>
       {
         "properties": {
           "templateLink": {
             "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json",
             "contentVersion": "1.0.0.0"
           },
           "mode": "Incremental",
           "parametersLink": {
             "uri": "http://mystorageaccount.blob.core.windows.net/templates/parameters.json",
             "contentVersion": "1.0.0.0"
           }
         }
       }
    

    Per registrare il contenuto della risposta, il contenuto della richiesta o entrambi, includere debugSetting nella richiesta.

     "debugSetting": {
       "detailLevel": "requestContent, responseContent"
     }
    

    È possibile impostare l'account di archiviazione per l'utilizzzo di un token di firma di accesso condiviso (SAS). Per altre informazioni, vedere Delegating Access with a Shared Access Signature (Delega dell'accesso con una firma di accesso condiviso).

  5. Ottenere lo stato della distribuzione del modello. Per altre informazioni, vedere Get information about a template deployment (Ottenere informazioni sulla distribuzione di un modello).

       GET https://management.azure.com/subscriptions/<YourSubscriptionId>/resourcegroups/<YourResourceGroupName>/providers/Microsoft.Resources/deployments/<YourDeploymentName>?api-version=2015-01-01
        <common headers>
    

File di parametri

Se si usa un file di parametri per passare i valori dei parametri durante la distribuzione, è necessario creare un file JSON con un formato simile all'esempio seguente:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "webSiteName": {
            "value": "ExampleSite"
        },
        "webSiteHostingPlanName": {
            "value": "DefaultPlan"
        },
        "webSiteLocation": {
            "value": "West US"
        },
        "adminPassword": {
            "reference": {
               "keyVault": {
                  "id": "/subscriptions/{guid}/resourceGroups/{group-name}/providers/Microsoft.KeyVault/vaults/{vault-name}"
               }, 
               "secretName": "sqlAdminPassword" 
            }   
        }
   }
}

La dimensione del file di parametro non può essere superiore a 64 KB.

Se è necessario fornire un valore sensibile per un parametro (ad esempio una password), aggiungere tale valore a un insieme di credenziali delle chiavi. Recuperare l'insieme di credenziali delle chiavi durante la distribuzione, come illustrato nell'esempio precedente. Per ulteriori informazioni, vedere Passare valori protetti durante la distribuzione.

Passaggi successivi