Esercizio - Distribuire i modelli di Azure Resource Manager
Nota
La prima volta che si attiva una sandbox e si accettano le condizioni, l'account Microsoft viene associato a una nuova directory di Azure denominata Microsoft Learn Sandbox. Si viene aggiunti a una sottoscrizione speciale denominata Concierge Subscription.
In questa unità viene distribuito un modello di Azure Resource Manager dal computer e da un repository GitHub specificando un URI.
Importante
Questo esercizio usa Strumenti di Azure Resource Manager per Visual Studio Code. Assicurarsi di installare questa estensione in Visual Studio Code.
Configurare l'ambiente con la sottoscrizione della sandbox di Microsoft Learn
Per eseguire ogni distribuzione in questa unità, è necessario accedere all'account Azure dal terminale di Visual Studio Code.
Verificare di accedere allo stesso account che ha attivato la sandbox.
Accedere ad Azure
Dal terminale in Visual Studio Code eseguire il comando seguente per accedere ad Azure. Eseguendo questo comando viene aperta una finestra del browser che consente di accedere al proprio account.
Connect-AzAccount
Dopo aver effettuato l'accesso, viene visualizzato un elenco di sottoscrizioni associate all'account nel terminale. Se è stata attivata la sandbox, l'elenco includerà la sottoscrizione Concierge.
Verificare il nome della sottoscrizione. Il comando seguente elenca le sottoscrizioni i nomi e i rispettivi ID in un formato di tabella di facile lettura. Cercare
Concierge Subscription
.Get-AzSubscription
Modificare la sottoscrizione attiva impostandola sulla sottoscrizione Concierge Subscription.
$context = Get-AzSubscription -SubscriptionName "Concierge Subscription" | Set-AzContext
Impostare il gruppo di risorse predefinito
A questo punto è necessario impostare il gruppo di risorse creato nella sandbox come gruppo di risorse predefinito. Per eseguire questa operazione, è necessario prima di tutto ottenere il nome del gruppo di risorse eseguendo il comando seguente.
Get-AzResourceGroup | where-object ResourceGroupName -match "learn" | Set-AzDefault
In questo comando usare il nome della risorsa ottenuto dal comando precedente. Sarà simile a learn-a73131a1-b618-48b8-af70-21af7ca420c4
. Questo comando consente di omettere il parametro dagli altri comandi di Azure PowerShell in questo esercizio.
Nota
In genere, quando si esegue un comando di PowerShell o dell'interfaccia della riga di comando di Azure per distribuire un modello, è necessario specificare il nome del gruppo di risorse di destinazione. Eseguendo il comando precedente, è stato impostato il contesto della distribuzione. Il nome del gruppo di risorse sandbox è stato specificato eseguendo il comando Set-AzDefault di PowerShell:
Set-AzDefault -ResourceGroupName {Resource Group Name}
Distribuire un modello locale
Nell'esercizio seguente si distribuisce un modello dal computer locale. Il nome del gruppo di risorse usato in genere per la distribuzione nell'ambiente locale non è necessario a questo punto, perché nella sezione precedente è già stato definito il gruppo di risorse predefinito.
Per iniziare, copiare e incollare il contenuto del codice del modello seguente in un file in una directory locale. Ad esempio, usare
C:\JSON\maintemplate.json
.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "VnetName": { "type": "string", "defaultValue": "VNet-001", "metadata": { "description": "Virtual Network Name" } }, "CostCenterIO": { "type": "string", "defaultValue": "12345", "metadata": { "description": "Cost Center IO number for cross billing" } }, "OwnerName": { "type": "string", "defaultValue": "John Smith", "metadata": { "description": "Name of the stakeholder responsible for this resource" } } }, "variables": {}, "resources": [ { "apiVersion": "2018-10-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('VnetName')]", "location": "[resourceGroup().location]", "tags": { "CostCenter": "[parameters('CostCenterIO')]", "Owner": "[parameters('OwnerName')]" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Dopo aver salvato il file in locale, è possibile usare il comando di PowerShell per distribuirlo a livello del gruppo di risorse, come descritto nell'unità precedente. Nello specifico, usare il comando New-AzResourceGroupDeployment.
$templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile
Al termine, i risultati saranno simili all’esempio seguente.
DeploymentName : DeployLocalTemplate-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:50:04 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Eseguire la distribuzione dello stesso modello locale con i valori dei parametri
Nell'esercizio precedente il modello è stato distribuito usando il valore predefinito del parametro. Quando si distribuisce un modello di Azure Resource Manager locale, può essere necessario passare i valori dei parametri. È possibile usare parametri inline o un file di parametri.
Per passare i parametri inline alla distribuzione, è necessario specificare i nomi dei parametri con il cmdlet New-AzResourceGroupDeployment
. Nell'esercizio seguente si passeranno i parametri come parametri inline e come file di parametri.
Usando lo stesso modello dell'esercizio precedente, si costruirà una tabella hash contenente i valori per i parametri del modello necessari.
$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $templateFile="C:\JSON\maintemplate.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-2-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile ` -TemplateParameterObject $parameters
Al termine, i risultati saranno simili ai seguenti:
DeploymentName : DeployLocalTemplate-2-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:51:55 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Invece di passare parametri come valori inline nello script, può essere più facile usare un file JSON contenente i valori dei parametri. Il file di parametri può essere un file locale o un file esterno/remoto con un URI accessibile. Per altre informazioni sul file dei parametri, vedere Creare il file di parametri di Resource Manager.
Per passare un file di parametri locale, usare il parametro
TemplateParameterFile
nello stesso comando già usato. Tuttavia, è prima necessario creare e salvare il file di parametri.Poiché si usa Visual Studio Code con l'estensione Strumenti di Azure Resource Manager, è possibile aprire il modello di Azure Resource Manager salvato in locale e selezionare il collegamento Select/create parameter file (Selezionare o creare un file di parametri) ....
Selezionare Nuovo nel menu e quindi selezionare Solo parametri obbligatori. L'estensione crea un file di parametri basato sul modello attualmente aperto.
Usare il comando di PowerShell seguente con il parametro
TemplateParameterFile
.$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $templateFile="C:\JSON\maintemplate.json" $TemplateParameterFile= "C:\JSON\maintemplate.parameters.json" $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-3-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateFile $templateFile ` -TemplateParameterFile $TemplateParameterFile
Dopo la distribuzione, i risultati devono essere simili all'esempio seguente.
DeploymentName : DeployLocalTemplate-3-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:54:40 p.m. Mode : Incremental TemplateLink : Parameters : Name Type Value =============== ========================= ========== vnetName String VNet-001 costCenterIO String 12345 ownerName String John Smith Outputs : DeploymentDebugLogLevel :
Distribuire un modello esterno o remoto
In alcuni casi, è necessario eseguire la distribuzione da una posizione esterna o remota anziché da un modello nel computer locale. ad esempio in un repository di controllo del codice sorgente come GitHub. È possibile, in alternativa, archiviarli in un account di archiviazione di Azure per consentire l'accesso condiviso nell'organizzazione.
Per distribuire un modello esterno, usare il parametro
TemplateUri
.Nel prossimo esercizio si distribuirà un modello di Azure Resource Manager da un repository GitHub. Poiché il repository è pubblico, non è necessario preoccuparsi di distribuire un modello che richiede un token di firma di accesso condiviso (SAS). Per informazioni dettagliate sull'uso di una posizione remota privata o sicura, vedere Distribuire un modello privato con un token SAS.
L'URI del modello per l'esercizio è https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Si tratta di un modello breve che distribuisce un account di archiviazione di base nell'ambiente sandbox.
Il comando di PowerShell è del tutto identico a quello per un modello locale. L'unica differenza è che il parametro
-TemplateUri
sostituisce il parametro-TemplateFile
.Usare il codice seguente per eseguire la distribuzione nella sandbox fornita:
$parameters = @{vnetName = "VNet-001"; costCenterIO = "12345"; ownerName = "John Smith"} $today=Get-Date -Format "MM-dd-yyyy" $DeploymentName="DeployLocalTemplate-4-"+"$today" New-AzResourceGroupDeployment ` -Name $DeploymentName ` -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
I risultati sono simili alla schermata seguente. Forniscono informazioni dettagliate sul percorso del modello.
DeploymentName : DeployLocalTemplate-4-08-24-2020 ResourceGroupName : learn-03f041a7-cd17-4f50-9c81-5f6678feb217 ProvisioningState : Succeeded Timestamp : 2020-08-24 5:56:55 p.m. Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ==================== ========================= ========== storageAccountType String Standard_LRS location String westus Outputs : Name Type Value ==================== ========================= ========== storageAccountName String storepgxosadmbq77e DeploymentDebugLogLevel :
Nota
Questa sezione è stata scritta usando comandi dell'interfaccia della riga di comando di Azure nel sottosistema Windows per Linux (WSL2) su Windows 10. I comandi sono gli stessi sia che si usi l'interfaccia della riga di comando di Azure in una shell PowerShell, CMD o Bash. Può tuttavia essere diverso il modo in cui vengono gestite le variabili.
Accedere ad Azure
Dal terminale in Visual Studio Code eseguire il comando seguente per accedere ad Azure. Eseguendo questo comando viene aperta una finestra del browser che consente di accedere al proprio account.
az login
Dopo aver effettuato l'accesso, viene visualizzato un elenco JSON delle sottoscrizioni associate all'account nel terminale. Se è stata attivata la sandbox, l'elenco includerà la sottoscrizione Concierge.
Ottenere l'ID sottoscrizione. Il comando seguente elenca le sottoscrizioni e i rispettivi ID. L'ID sottoscrizione corrisponde alla terza colonna. Cercare
Concierge Subscription
e copiare la terza colonna. Dovrebbe essere simile aaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.az account list -o table
Modificare la sottoscrizione attiva impostandola sulla sottoscrizione Concierge Subscription. Assicurarsi di sostituire
{Your subscription ID}
con l'ID della sottoscrizione Concierge ottenuto con il comando precedente.az account set -s {Your subscription ID}
Impostare il gruppo di risorse predefinito
A questo punto è necessario impostare il gruppo di risorse creato nella sandbox come gruppo di risorse predefinito. Per eseguire questa operazione, è necessario prima di tutto ottenere il nome del gruppo di risorse usando il comando seguente:
az group list -o table
In questo comando usare il nome della risorsa ottenuto dal comando precedente. Sarà simile a learn-a73131a1-b618-48b8-af70-21af7ca420c4
. Questo comando consente di omettere il parametro dagli altri comandi dell'interfaccia della riga di comando di Azure in questo esercizio.
Nota
In genere, quando si usa un comando dell'interfaccia della riga di comando di Azure per distribuire un modello occorre specificare il nome del gruppo di risorse di destinazione. Nell'esercizio in questo modulo questo requisito viene ignorato impostando il contesto della distribuzione. Nel passaggio successivo viene specificato il nome del gruppo di risorse dell'ambiente sandbox usando il comando az configure dell'interfaccia della riga di comando di Azure.
az configure --defaults group={Resource Group Name}
Distribuire un modello locale
Nell'esercizio seguente si distribuisce un modello dal computer locale. Il nome del gruppo di risorse usato in genere per la distribuzione nell'ambiente locale non è necessario a questo punto, perché nella sezione precedente è già stato definito il gruppo di risorse predefinito.
Per iniziare, copiare e incollare il contenuto del codice del modello seguente in un file in una directory locale. Ad esempio, usare
C:\JSON\maintemplate.json
o/mnt/c/Users/you/json/maintemplate.json
.{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "VnetName": { "type": "string", "defaultValue": "VNet-001", "metadata": { "description": "Virtual Network Name" } }, "CostCenterIO": { "type": "string", "defaultValue": "12345", "metadata": { "description": "Cost Center IO number for cross billing" } }, "OwnerName": { "type": "string", "defaultValue": "John Smith", "metadata": { "description": "Name of the stakeholder responsible for this resource" } } }, "variables": {}, "resources": [ { "apiVersion": "2018-10-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('VnetName')]", "location": "[resourceGroup().location]", "tags": { "CostCenter": "[parameters('CostCenterIO')]", "Owner": "[parameters('OwnerName')]" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Dopo aver salvato il file in locale, è possibile usare il comando dell'interfaccia della riga di comando di Azure per distribuirlo a livello del gruppo di risorse, come descritto nell'unità precedente. Nello specifico, usare az deployment group create.
Nota
Nell'esempio seguente il file modello si trova in una cartella json nell'unità principale del sottosistema Windows per Linux (WSL2). Modificare il comando in base alla shell scelta.
templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile
Al termine, l'output risultante dovrebbe essere simile all'esempio seguente. Per assicurarsi che la distribuzione sia riuscita, cercare la riga
"provisioningState": "Succeeded"
.{ "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2020-08-19", "location": null, "name": "DeployLocalTemplate-2020-08-19", "properties": { "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd", "debugSetting": null, "dependencies": [], "duration": "PT8.9060761S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/ learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T14:47:06.403362+00:00", "validatedResources": null }, "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tags": null, "type": "Microsoft.Resources/deployments" }
Eseguire la distribuzione dello stesso modello locale con i valori dei parametri
Nell'esercizio precedente il modello è stato distribuito usando il valore predefinito del parametro. Quando si distribuisce un modello di Azure Resource Manager locale, può essere necessario passare i valori dei parametri. È possibile usare parametri inline o un file di parametri.
Nell'esercizio seguente si passano parametri inline alla distribuzione. È necessario specificare i nomi dei parametri, indipendentemente dal fatto che si usino parametri inline o un file di parametri, usando il comando az deployment group create
.
Usando lo stesso modello dell'esercizio precedente, costruire una variabile che contiene i parametri in un formato di stringa JSON per i parametri del modello necessari.
Nota
Nell'esempio seguente il file modello si trova in una cartella json nel sottosistema Windows per Linux (WSL2). Modificare il comando in base alla shell e al sistema operativo scelti.
parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}" templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-2-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile \ --parameters "$parameters"
Al termine, i risultati saranno simili all'esempio seguente. Per verificare che il comando sia riuscito, vedere la sezione
"parameters"
e il valore"provisioningState"
.{- Finished .. "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Resources/deployments/DeployLocalTemplate-2-2020-08-19", "location": null, "name": "DeployLocalTemplate-2-2020-08-19", "properties": { "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee", "debugSetting": null, "dependencies": [], "duration": "PT4.6990388S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f/resourceGroups/learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T16:40:20.249786+00:00", "validatedResources": null }, "resourceGroup": "learn-cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a", "tags": null, "type": "Microsoft.Resources/deployments" }
Invece di passare parametri come valori inline nello script, può essere più facile usare un file JSON contenente i valori dei parametri. Il file di parametri può essere un file locale o un file esterno/remoto con un URI accessibile. Per altre informazioni sul file dei parametri, vedere Creare il file di parametri di Resource Manager.
Per passare un file di parametri locale, usare il parametro
--parameters
nello stesso comando già usato. Tuttavia, è prima necessario creare e salvare il file di parametri.Poiché si usa Visual Studio Code con l'estensione Strumenti di Azure Resource Manager, è possibile aprire il modello di Azure Resource Manager salvato in locale e selezionare il collegamento Select or create a parameter file to enable full validation (Selezionare o creare un file di parametri per consentire la convalida completa).
Scegliere Nuovo dal menu. L'estensione crea un file di parametri basato sul modello attualmente aperto.
Usare il comando dell'interfaccia della riga di comando di Azure con il parametro
--parameters
.Nota
Nell'esempio seguente il file modello si trova in una cartella json nel sottosistema Windows per Linux (WSL2). Modificare il comando in base alla shell e al sistema operativo scelti.
templateFile=/mnt/c/Users/<UserName>/json/maintemplate.json templateparameterfile=/mnt/c/Users/<UserName>/json/maintemplate.parameters.json today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-3-"$today az deployment group create \ --name $deploymentname \ --template-file $templateFile \ --parameters $templateparameterfile
Dopo la distribuzione, i risultati devono essere simili all'esempio seguente.
{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-3-2020-08-19", "location": null, "name": "DeployLocalTemplate-3-2020-08-19", "properties": { "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff", "debugSetting": null, "dependencies": [], "duration": "PT4.2058912S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Network/virtualNetworks/VNet-001", "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b" } ], "outputs": null, "parameters": { "costCenterIO": { "type": "String", "value": "12345" }, "ownerName": { "type": "String", "value": "John Smith" }, "vnetName": { "type": "String", "value": "VNet-001" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Network", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "virtualNetworks" } ] } ], "provisioningState": "Succeeded", "templateHash": "11553431046699679955", "templateLink": null, "timestamp": "2020-08-19T20:42:44.069215+00:00", "validatedResources": null }, "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b", "tags": null, "type": "Microsoft.Resources/deployments" }
Distribuire un modello esterno o remoto
In alcuni casi, è necessario eseguire la distribuzione da una posizione esterna o remota anziché da un modello nel computer locale. ad esempio in un repository di controllo del codice sorgente come GitHub. È possibile, in alternativa, archiviarli in un account di archiviazione di Azure per consentire l'accesso condiviso nell'organizzazione.
- Per distribuire un modello esterno, usare il parametro
--template-uri
.
In questo esercizio si distribuisce un modello di Azure Resource Manager da un repository GitHub. Poiché il repository è pubblico, non è necessario preoccuparsi di distribuire un modello che richiede un token di firma di accesso condiviso (SAS). Per informazioni dettagliate sull'uso di una posizione remota privata o sicura, vedere Distribuire un modello privato con un token SAS.
L'URI del modello per l'esercizio è https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json. Si tratta di un modello breve che distribuisce un account di archiviazione di base nell'ambiente sandbox.
L'interfaccia della riga di comando di Azure è del tutto identica a quella per un modello locale. L'unica differenza è che il parametro
--template-uri
sostituisce il parametro--template-file
.Usare il codice seguente per eseguire la distribuzione nella sandbox fornita:
parameters="{\"vnetName\":{\"value\":\"VNet-001\"},\"costCenterIO\":{\"value\":\"12345\"},\"ownerName\":{\"value\":\"John Smith\"}}" today=$(date +"%Y-%m-%d") deploymentname="DeployLocalTemplate-4-"$today az deployment group create \ --name $deploymentname \ --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
I risultati sono simili al blocco di codice seguente. Forniscono informazioni dettagliate sul percorso del modello nella sezione
"templateLink"
. Indicano anche se la distribuzione è riuscita nella sezione"provisioningState"
.{- Finished .. "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Resources/deployments/DeployLocalTemplate-4-2020-08-19", "location": null, "name": "DeployLocalTemplate-4-2020-08-19", "properties": { "correlationId": "dddd3333-ee44-5555-66ff-777777aaaaaa", "debugSetting": null, "dependencies": [], "duration": "PT24.3286124S", "error": null, "mode": "Incremental", "onErrorDeployment": null, "outputResources": [ { "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b/providers/Microsoft.Storage/storageAccounts/store7zk7eyqew54l4", "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b" } ], "outputs": { "storageAccountName": { "type": "String", "value": "store7zk7eyqew54l4" } }, "parameters": { "location": { "type": "String", "value": "westus" }, "storageAccountType": { "type": "String", "value": "Standard_LRS" } }, "parametersLink": null, "providers": [ { "id": null, "namespace": "Microsoft.Storage", "registrationPolicy": null, "registrationState": null, "resourceTypes": [ { "aliases": null, "apiVersions": null, "capabilities": null, "locations": [ "westus" ], "properties": null, "resourceType": "storageAccounts" } ] } ], "provisioningState": "Succeeded", "templateHash": "12600309984865991765", "templateLink": { "contentVersion": "1.0.0.0", "id": null, "relativePath": null, "uri": "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" }, "timestamp": "2020-08-19T20:53:36.759312+00:00", "validatedResources": null }, "resourceGroup": "learn-dddd3d3d-ee4e-ff5f-aa6a-bbbbbb7b7b7b", "tags": null, "type": "Microsoft.Resources/deployments" }