Esercizio: Usare le funzioni di Azure Resource Manager per creare espressioni
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 questo esercizio si crea un'espressione usando le funzioni del modello di Azure Resource Manager (ARM). L'espressione crea un nome univoco per ogni gruppo di risorse combinando un input di prefisso con un hash dell'ID del gruppo di risorse. Restituisce nomi di account di archiviazione di Azure come dev2hu6sbtr5
e staging5his8hgr67
.
In questo esercizio si usano gli Strumenti di Azure Resource Manager per Visual Studio Code. Assicurarsi di installare questa estensione in Visual Studio Code.
Creare il file del modello di Resource Manager
Nel modulo precedente è stato creato un modello di Resource Manager che ha distribuito un account di archiviazione. Al file sono stati aggiunti parametri e un output. In questo esercizio si inizia usando il file, ma l'output viene rimosso per ridurre il sovraccarico.
Aprire Visual Studio Code e creare un file denominato azuredeploy.json. Se è disponibile il file del modulo precedente, è possibile usare il file.
Sostituire il contenuto del file con il codice riportato di seguito:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24 }, "storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] } }, "functions": [], "variables": {}, "resources": [{ "name": "[parameters('storageName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } }], "outputs": {} }
Se il modulo precedente non è stato completato, si consiglia di rivedere il file. Prendere nota del parametro
storageName
. Questo parametro è stato usato per passare un nome univoco per l'account di archiviazione.
Creare un'espressione per impostare un nome di account di archiviazione univoco
Anziché passare il nome dell'account di archiviazione, si modifica il parametro in modo da usare un prefisso per il nome dell'account di archiviazione. Questo parametro viene passato alla funzione concat
nell'espressione.
Nella sezione
parameters
modificarestorageName
in storagePrefix.Impostare il valore dell'attributo
maxLength:
del parametrostoragePrefix
su 11. La lunghezza massima per il nome di un account di archiviazione è di 24 caratteri e ci si vuole assicurare che l'hash aggiunto dalla funzione creata non causi il superamento di tale lunghezza.Creare l'espressione per impostare il nome di account di archiviazione univoco. Nella sezione
resources
modificare i valori degli attributiname:
edisplayName:
da"[parameters('storageName')]"
a "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]". Questa espressione è stata descritta nell'unità precedente. Il file avrà un aspetto simile al seguente:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storagePrefix": { "type": "string", "minLength": 3, "maxLength": 11 }, "storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] } }, "functions": [], "variables": {}, "resources": [{ "name": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } }], "outputs": {} }
Distribuire il modello di Resource Manager in Azure
Per distribuire questo modello in Azure, è necessario accedere all'account Azure dal terminale di Visual Studio Code. Verificare che gli strumenti dell'interfaccia della riga di comando di Azure siano installati. Verificare anche di accedere allo stesso account che ha attivato la sandbox.
Aprire una finestra del terminale usando il menu Terminale.
Se il menu a discesa sul lato destro della finestra del terminale visualizza bash, la shell è corretta. È possibile passare alla sezione successiva.
Se la shell non è corretta, selezionare Seleziona shell predefinita nel menu a discesa.
Selezionare bash:
Selezionare + nel terminale per creare un nuovo terminale con bash come shell.
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 avere effettuato l'accesso, verrà visualizzato un elenco delle sottoscrizioni associate all'account nel terminale. Se la sandbox è stata attivata, viene visualizzata una sottoscrizione denominata Concierge Subscription. Usarla nella parte rimanente dell'esercizio.
Impostare la sottoscrizione predefinita per tutti i comandi dell'interfaccia della riga di comando di Azure eseguiti in questa sessione:
az account set --subscription "Concierge Subscription"
Nota
Se di recente sono state usate più sandbox, potrebbero essere elencate più sottoscrizioni Concierge Subscription. In tal caso seguire i due passaggi successivi per impostare la sottoscrizione predefinita. Se il comando precedente è stato eseguito correttamente, ignorare i due passaggi successivi.
Ottenere gli ID della sottoscrizione Concierge Subscription:
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Impostare la sottoscrizione predefinita usando l'ID sottoscrizione. Sostituire
{your subscription ID}
con l'ID Concierge Subscription più recente.az account set --subscription {your subscription ID}
Impostare il gruppo di risorse predefinito
Impostare come gruppo di risorse predefinito il gruppo di risorse creato nell'ambiente sandbox. In questo modo è possibile omettere il parametro nei comandi rimanenti dell'interfaccia della riga di comando di Azure in questo esercizio.
az configure --defaults group=<rgn>[sandbox resource group name]</rgn>
Distribuire il modello in Azure
Nel modulo precedente sono stati descritti i comandi di distribuzione. Viene ora usato il comando az deployment group create
dell'interfaccia della riga di comando di Azure.
Distribuire il modello usando i comandi dell'interfaccia della riga di comando di Azure nel terminale di Visual Studio Code. Ricordarsi di sostituire
{your-prefix}
con una stringa diversa. Ad esempio, è possibile usare storage.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addfunction-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storagePrefix={your-prefix}
Nella prima sezione del codice si impostano le variabili dell'interfaccia della riga di comando di Azure per il percorso del file modello che si vuole distribuire e il nome della distribuzione. Si usa quindi il comando
az deployment group create
per distribuire il modello in Azure.Si dovrebbe vedere il messaggio
Running...
nel terminale.
Per distribuire questo modello in Azure, è necessario accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi di avere installato gli strumenti di Azure PowerShell e di accedere allo stesso account con cui è stata attivata la sandbox.
Aprire una finestra del terminale usando il menu Terminale.
Se il menu a discesa sul lato destro della finestra del terminale visualizza pwsh, la shell è corretta. È possibile passare alla sezione successiva.
Se la shell non è corretta, selezionare Seleziona shell predefinita nel menu a discesa.
Selezionare pwsh.
Selezionare + nel terminale per creare un nuovo terminale con pwsh come shell.
Accedere ad Azure usando Azure PowerShell
Dal terminale in Visual Studio Code eseguire il comando seguente per accedere ad Azure. Quando si esegue questo comando, viene richiesto di aprire una finestra del browser con un URL che consente di accedere al proprio account. Usare il codice nel prompt. Assicurarsi di accedere con lo stesso account usato per attivare la sandbox.
Connect-AzAccount
Dopo avere effettuato l'accesso, verrà visualizzato un elenco delle sottoscrizioni associate all'account nel terminale. Se la sandbox è stata attivata, viene visualizzata una sottoscrizione denominata Concierge Subscription. Usarla nella parte rimanente dell'esercizio.
Impostare la sottoscrizione predefinita per tutti i comandi dell'interfaccia della riga di comando di Azure eseguiti in questa sessione.
Ottenere l'ID sottoscrizione. Il comando visualizza un elenco delle sottoscrizioni e i relativi ID. L'ID sottoscrizione è la seconda colonna. Cercare
Concierge Subscription
e copiare la seconda colonna. L'ID è simile al seguente:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Modificare la sottoscrizione attiva impostandola sulla sottoscrizione Concierge Subscription. Assicurarsi di sostituire
{Your subscription ID}
con l'ID appena copiato.$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Impostare come gruppo di risorse predefinito il gruppo di risorse creato nell'ambiente sandbox. In questo modo è possibile omettere il parametro nei comandi rimanenti di Azure PowerShell in questo esercizio.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Distribuire il modello in Azure
Nel modulo precedente sono stati descritti i comandi di distribuzione. Viene ora usato il comando New-AzResourceGroupDeployment
di Azure PowerShell.
Distribuire il modello usando i comandi di Azure PowerShell nel terminale di Visual Studio Code. Ricordarsi di sostituire
{your-prefix}
con una stringa diversa. Ad esempio, è possibile usare storage.$templateFile = "azuredeploy.json" $today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addfunction-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storagePrefix {your-prefix}
Nella prima sezione del codice si impostano le variabili di Azure PowerShell per il percorso del file modello che si vuole distribuire e il nome della distribuzione. Si usa quindi il comando New-AzResourceGroupDeployment
per distribuire il modello in Azure.
Controllare la distribuzione
Al termine della distribuzione, passare al portale di Azure e assicurarsi di trovarsi nella sottoscrizione sandbox. Per controllare la sottoscrizione, selezionare l'avatar nell'angolo superiore destro della pagina. Selezionare Cambia directory. Nell'elenco selezionare la directory Microsoft Learn Sandbox.
Nel riquadro a sinistra, seleziona Gruppi di risorse.
Selezionare
[nome gruppo di risorse sandbox] .Nella sezione Panoramica si può notare che è stata completata una distribuzione:
Selezionare 1 completata per visualizzare i dettagli della distribuzione:
Selezionare addfunction per individuare le risorse distribuite:
Lasciare aperta la pagina nel browser in modo da poter controllare di nuovo le distribuzioni più avanti nel modulo.