Esercizio: Usare le funzioni di Azure Resource Manager per creare espressioni

Completato

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.

  1. Aprire Visual Studio Code e creare un file denominato azuredeploy.json. Se è disponibile il file del modulo precedente, è possibile usare il file.

  2. 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": {}
    }
    
  3. 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.

  1. Nella sezione parameters modificare storageName in storagePrefix.

  2. Impostare il valore dell'attributo maxLength: del parametro storagePrefix 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.

  3. Creare l'espressione per impostare il nome di account di archiviazione univoco. Nella sezione resources modificare i valori degli attributi name: e displayName: 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.

  1. Aprire una finestra del terminale usando il menu Terminale.

  2. Se il menu a discesa sul lato destro della finestra del terminale visualizza bash, la shell è corretta. È possibile passare alla sezione successiva.

    Screenshot con la finestra del terminale di Visual Studio Code con bash nel menu a discesa.

  3. Se la shell non è corretta, selezionare Seleziona shell predefinita nel menu a discesa.

  4. Selezionare bash:

    Screenshot con l'elenco per la selezione della shell nella finestra del terminale di Visual Studio Code.

  5. Selezionare + nel terminale per creare un nuovo terminale con bash come shell.

Accedere ad Azure

  1. 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
    
  2. 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.

  3. 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.

  4. Ottenere gli ID della sottoscrizione Concierge Subscription:

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 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.

  1. Aprire una finestra del terminale usando il menu Terminale.

  2. Se il menu a discesa sul lato destro della finestra del terminale visualizza pwsh, la shell è corretta. È possibile passare alla sezione successiva.

    Screenshot con la finestra del terminale di Visual Studio Code con pwsh nel menu a discesa.

  3. Se la shell non è corretta, selezionare Seleziona shell predefinita nel menu a discesa.

  4. Selezionare pwsh.

    Screenshot con l'elenco per la selezione della shell nella finestra del terminale di Visual Studio Code.

  5. Selezionare + nel terminale per creare un nuovo terminale con pwsh come shell.

Accedere ad Azure usando Azure PowerShell

  1. 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
    
  2. 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.

  3. 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
    
  4. 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
    
  5. 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.

  1. Nel riquadro a sinistra, seleziona Gruppi di risorse.

  2. Selezionare [nome gruppo di risorse sandbox].

  3. Nella sezione Panoramica si può notare che è stata completata una distribuzione:

    Screenshot del portale di Azure con la panoramica del gruppo di risorse. La sezione Distribuzioni indica che è stata completata una distribuzione.

  4. Selezionare 1 completata per visualizzare i dettagli della distribuzione:

    Screenshot del portale di Azure con le distribuzioni. Viene elencata una distribuzione con lo stato Riuscita.

  5. Selezionare addfunction per individuare le risorse distribuite:

    Screenshot del portale di Azure che mostra che l'account di archiviazione è stato distribuito.

  6. Lasciare aperta la pagina nel browser in modo da poter controllare di nuovo le distribuzioni più avanti nel modulo.