Esercitazione: usare copy per ridurre la ripetizione
In questo esercizio finale si continuerà a lavorare con gli account di archiviazione. Questa volta si usa il costrutto copy
per effettuare il provisioning di più account di archiviazione da una singola definizione.
Copy
offre un'unica posizione centrale che è necessario aggiornare quando cambiano i requisiti.
Creare il modello di Resource Manager
In questo esercizio si crea un modello di Azure Resource Manager (ARM) che definisce una risorsa dell'account di archiviazione. Il modello usa copy
per creare versioni simili della stessa risorsa un numero specificato di volte.
In Visual Studio Code creare un file denominato copy.json nella stessa directory che contiene azuredeploy.json.
Aggiungere questi contenuti a copy.json:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageCount": { "type": "int", "defaultValue": 1, "metadata": { "description": "the number of storage accounts copies being deployed" } }, "storageAccountName": { "type": "string", "defaultValue": "storage", "metadata": { "description": "the name of the storage account" } } }, "functions": [], "variables": {}, "resources": [ { "name": "[concat(parameters('storageAccountName'), copyIndex())]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "storageaccount1" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Premium_LRS", "tier": "Premium" }, "copy": { "name": "storagecopy", "count": "[parameters('storageCount')]" } } ], "outputs": {} }
Il parametro storageCount
definisce il numero di copie da creare.
In resources
prendere nota della risorsa dell'account di archiviazione. Per rendere univoco il nome dell'account di archiviazione, il modello usa copyIndex()
per aggiungere l'indice corrente al nome dell'account di archiviazione.
La sezione copy
legge il numero di copie da creare dal parametro storageCount
.
Distribuire il modello
Il modello può essere distribuito come in precedenza. Il passaggio di distribuzione effettua il provisioning di due account di archiviazione simili.
Creare una variabile di PowerShell che contenga il nome dell'account di archiviazione.
$STORAGE_ACCT_NAME="tailwindsa" + (Get-Random -Count 1)
Per distribuire il modello, eseguire il seguente comando
New-AzResourceGroupDeployment
:New-AzResourceGroupDeployment ` -TemplateFile "./copy.json" ` -storageAccountName $STORAGE_ACCT_NAME ` -storageCount 2
In questo caso si imposta
storageCount
su2
per effettuare il provisioning di due account di archiviazione.
Verificare la distribuzione
Anche se l'output indica che sono stati creati due account di archiviazione, si esegue il comando Get-AzResource
per concentrarsi sulle risorse di output.
Eseguire il seguente comando Get-AzResource
per verificare che le risorse siano state distribuite:
Get-AzResource -Name tailwindsa* -ResourceGroupName <rgn>resource group name</rgn> | Select-Object -Property Name,ResourceId
L'argomento tailwindsa*
specifica di visualizzare solo gli identificatori corrispondenti al prefisso del nome assegnato alle risorse.
L'output è simile al seguente:
Name ResourceId
---- ----------
tailwindsa1852777810 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…
tailwindsa1852777811 /subscriptions/11112222-3333-4444-5555-1111222233334444/resourceGroups/<rgn>resoure group</rgn>/providers/Microsoft.Storage/storageAccount…
In questo esempio:
- tailwindsa185277781 è il nome di base generato per l'account di archiviazione (
"tailwindsa" + Get-Random -Count 1
). - tailwindsa1852777810 (il nome di base più "0") è il primo account di archiviazione.
- tailwindsa1852777811 (il nome di base più "1") è il secondo account di archiviazione.
Ottimo lavoro! Poiché le esigenze cambiano, ad esempio il livello di prestazioni necessario, è possibile modificare le definizioni delle risorse da un'unica posizione.
Eseguire la pulizia
La sandbox esegue automaticamente la pulizia delle risorse al termine di questo modulo.
Quando si lavora nella propria sottoscrizione, al termine di un progetto è buona norma determinare se le risorse create sono ancora necessarie. Le risorse che rimangono in esecuzione hanno un costo. È possibile eliminare risorse singole oppure gruppi di risorse per eliminare l'intero set di risorse.
Creare il modello di Resource Manager
In questo esercizio si crea un modello di Azure Resource Manager (ARM) che definisce una risorsa dell'account di archiviazione. Il modello usa copy
per creare versioni simili della stessa risorsa un numero specificato di volte.
In Visual Studio Code creare un file denominato copy.json nella stessa directory che contiene azuredeploy.json.
Aggiungere questi contenuti a copy.json:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageCount": { "type": "int", "defaultValue": 1, "metadata": { "description": "the number of storage accounts being deployed" } }, "storageAccountName": { "type": "string", "defaultValue": "storage", "metadata": { "description": "the name of the storage account" } } }, "functions": [], "variables": {}, "resources": [ { "name": "[concat(parameters('storageAccountName'), copyIndex())]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "storageaccount1" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Premium_LRS", "tier": "Premium" }, "copy": { "name": "storagecopy", "count": "[parameters('storageCount')]" } } ], "outputs": {} }
Il parametro storageCount
definisce il numero di copie da creare.
In resources
prendere nota della risorsa dell'account di archiviazione. Per rendere univoco il nome dell'account di archiviazione, il modello usa copyIndex()
per aggiungere l'indice corrente al nome dell'account di archiviazione.
La sezione copy
legge il numero di copie da creare dal parametro storageCount
.
Distribuire il modello
Il modello può essere distribuito come in precedenza. Il passaggio di distribuzione effettua il provisioning di due account di archiviazione simili.
Creare una variabile Bash che contenga il nome dell'account di archiviazione.
STORAGE_ACCT_NAME=tailwindsa$RANDOM
Per distribuire il modello, eseguire il seguente comando
az deployment group create
:az deployment group create \ --template-file copy.json \ --parameters storageAccountName=$STORAGE_ACCT_NAME storageCount=2
In questo caso si imposta
storageCount
su2
per effettuare il provisioning di due account di archiviazione.
Verificare la distribuzione
Anche se l'output indica che sono stati creati due account di archiviazione, si esegue il comando az deployment group show
per concentrarsi sulle risorse di output.
Eseguire il seguente comando az deployment group show
per visualizzare i dettagli relativi alla distribuzione:
az deployment group show \
--name copy \
--query "properties.outputResources[].id" \
--output tsv
L'argomento --query
specifica di visualizzare solo gli identificatori delle risorse di output.
L'output è simile al seguente:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9820
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>resource group name</rgn>/providers/Microsoft.Storage/storageAccounts/tailwindsa9821
In questo esempio:
- tailwindsa982 è il nome di base generato per l'account di archiviazione (
tailwindsa$RANDOM
). - tailwindsa9820 (il nome di base più "0") è il primo account di archiviazione.
- tailwindsa9821 (il nome di base più "1") è il secondo account di archiviazione.
Ottimo lavoro! Poiché le esigenze cambiano, ad esempio il livello di prestazioni necessario, è possibile modificare le definizioni delle risorse da un'unica posizione.
Eseguire la pulizia
La sandbox esegue automaticamente la pulizia delle risorse al termine di questo modulo.
Quando si lavora nella propria sottoscrizione, al termine di un progetto è buona norma determinare se le risorse create sono ancora necessarie. Le risorse che rimangono in esecuzione hanno un costo. È possibile eliminare risorse singole oppure gruppi di risorse per eliminare l'intero set di risorse.