Exercício – utilizar funções do Azure Resource Manager para criar expressões

Concluído

Nota

A primeira vez que ativar um sandbox e aceitar os termos, a sua conta Microsoft será associada a um novo diretório do Azure chamado Microsoft Learn Sandbox. É adicionado a uma subscrição especial chamada Subscrição de Assistente.

Neste exercício, irá criar uma expressão utilizando funções do modelo Azure Resource Manager (ARM). A expressão cria um nome exclusivo para cada grupo de recursos, ao combinar uma entrada de prefixo com um hash do ID de grupo de recursos. Resulta em nomes de conta de armazenamento do Azure como dev2hu6sbtr5 e staging5his8hgr67.

Neste exercício, irá utilizar a extensão Azure Resource Manager Tools for Visual Studio Code. Certifique-se de que instala esta extensão no Visual Studio Code.

Criar o ficheiro de modelo do Resource Manager

No módulo anterior, criou um modelo do Resource Manager que implementou uma conta de armazenamento. Adicionou parâmetros e uma saída a este ficheiro. Aqui, vai começar com o ficheiro, mas a saída foi removida para reduzir a sobrecarga.

  1. Abra o Visual Studio Code e crie um ficheiro chamado azuredeploy.json. Se tiver este ficheiro do módulo anterior, pode utilizar esse ficheiro.

  2. Substitua o conteúdo deste ficheiro pelo seguinte código:

    {
        "$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 não tiver completado o módulo anterior, despenda algum tempo para rever este ficheiro. Repare no parâmetro storageName. Este parâmetro é utilizado para transmitir um nome exclusivo para a conta de armazenamento.

Criar uma expressão para definir um nome exclusivo para a conta de armazenamento

Em vez de transmitir o nome da conta de armazenamento, altera o parâmetro para utilizar um prefixo para o nome da conta de armazenamento. Este parâmetro será transmitido para a função concat na sua expressão.

  1. Na secção parameters, altere storageName para storagePrefix.

  2. Altere o valor do atributo maxLength: do parâmetro storagePrefix para 11. O comprimento máximo para um nome de conta de armazenamento é de 24 caracteres, por isso deve ter certeza de que o hash adicionado da função que cria não faz com que o nome seja maior que isso.

  3. Crie a expressão para definir o nome exclusivo para a conta de armazenamento. Na secção resources, altere o valor dos atributos name: e displayName: de "[parameters('storageName')]" para "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]". Aprendeu sobre esta expressão na unidade anterior. O ficheiro deverá ter o seguinte aspeto:

    {
        "$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": {}
    }
    

Implementar o modelo do Resource Manager no Azure

Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que tem as ferramentas da CLI do Azure instaladas. Certifique-se de que está a iniciar sessão na mesma conta que ativou o sandbox.

  1. Abra uma janela do terminal através do menu Terminal.

  2. Se o menu pendente à direita da janela do terminal mostrar bash, significa que tem o shell correto para trabalhar. Pode avançar para a secção seguinte.

    Captura de ecrã a mostrar a janela do terminal do Visual Studio Code com bash no menu pendente.

  3. Se não tiver o shell correto, clique em Select Default Shell (Selecionar Shell Predefinido) no menu pendente.

  4. Selecione bash:

    Captura de ecrã a mostrar a lista de seleção de shell na janela do terminal do Visual Studio Code.

  5. Selecione + no terminal para criar um novo terminal com bash como shell.

Iniciar sessão no Azure

  1. A partir do terminal do Visual Studio Code, execute o seguinte comando para iniciar sessão no Azure. Executar este comando irá abrir um browser que lhe permite iniciar sessão na sua conta:

    az login
    
  2. Assim que tiver iniciado sessão, verá uma lista das subscrições associadas a esta conta no terminal. Se tiver ativado o sandbox, verá uma chamada Subscrição de Assistente. Utilize-a para o resto do exercício.

  3. Predefina a subscrição para todos os comandos da CLI do Azure que executar nesta sessão:

    az account set --subscription "Concierge Subscription"
    

    Nota

    Se tiver utilizado mais de um sandbox recentemente, pode haver mais de uma Subscrição de Assistente listada. Neste caso, utilize os dois passos seguintes para predefinir a subscrição. Se o comando acima tiver sido executado com êxito, ignore os dois passos seguintes.

  4. Obtenha os IDs da Subscrição de Assistente:

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Predefina a subscrição através do ID da subscrição. Substitua {your subscription ID} pelo ID da Subscrição de Assistente mais recente.

    az account set --subscription {your subscription ID}
    

Definir o grupo de recursos predefinido

  • Defina o grupo de recursos predefinido para o grupo de recursos criado para si no ambiente do sandbox. Tal permite-lhe omitir esse parâmetro do resto dos comandos da CLI do Azure neste exercício.

    az configure --defaults group=<rgn>[sandbox resource group name]</rgn>
    

Implementar o modelo no Azure

Aprendeu sobre os comandos de implementação no módulo anterior. Aqui, vamos utilizar o comando az deployment group create da CLI do Azure.

  • Implemente o modelo através dos comandos da CLI do Azure no terminal do Visual Studio Code. Lembre-se de substituir {your-prefix} por uma cadeia diferente. Por exemplo, pode utilizar 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}
    

    Na primeira secção deste código, define variáveis da CLI do Azure para o caminho para o ficheiro de modelo que pretende implementar e o nome da implementação. Em seguida, usou o az deployment group create comando para implantar o modelo para Azure.

    Verá Running... no terminal.

Para implementar este modelo no Azure, tem de iniciar sessão na sua conta do Azure a partir do terminal do Visual Studio Code. Certifique-se de que tem as ferramentas do Azure PowerShell instaladas e que está a iniciar sessão na mesma conta que ativou o sandbox.

  1. Abra uma janela do terminal através do menu Terminal.

  2. Se o menu pendente à direita da janela do terminal mostrar pwsh, tem o shell correto para trabalhar. Pode avançar para a secção seguinte.

    Captura de ecrã a mostrar a janela do terminal do Visual Studio Code com pwsh no menu pendente.

  3. Se não tiver o shell correto, clique em Select Default Shell (Selecionar Shell Predefinido) no menu pendente.

  4. Selecione pwsh.

    Captura de ecrã a mostrar a lista de seleção de shell na janela do terminal do Visual Studio Code.

  5. Selecione + no terminal para criar um novo terminal com pwsh como shell.

Iniciar sessão no Azure com o Azure PowerShell

  1. A partir do terminal do Visual Studio Code, execute o seguinte comando para iniciar sessão no Azure. Ao executar este comando ser-lhe-á pedido para abrir um browser num URL que lhe permita iniciar sessão na sua conta. Utilize o código que está na mensagem. Certifique-se de que inicia sessão com a mesma conta que utilizou para ativar o sandbox.

    Connect-AzAccount
    
  2. Assim que tiver iniciado sessão, verá uma lista das subscrições associadas a esta conta no terminal. Se tiver ativado o sandbox, verá uma chamada Subscrição de Assistente. Utilize-a para o resto do exercício.

    Predefina a subscrição para todos os comandos da CLI do Azure que executar nesta sessão.

  3. Obtenha o ID de subscrição. O comando irá listar as suas subscrições e os respetivos IDs. O ID de subscrição é a segunda coluna. Procure Concierge Subscription e copie a segunda coluna. Terá um aspeto semelhante ao seguinte: cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  4. Altere a sua subscrição ativa para a Subscrição de Assistente. Certifique-se de que substitui {Your subscription ID} pelo ID que acabou de copiar.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    
  5. Defina o grupo de recursos predefinido para o grupo de recursos criado para si no ambiente do sandbox. Ao fazê-lo, permite-lhe omitir esse parâmetro do resto dos comandos do Azure PowerShell neste exercício.

    Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    

Implementar o modelo no Azure

Ficou a saber mais sobre os comandos de implementação no módulo anterior. Aqui, estamos a utilizar o comando New-AzResourceGroupDeployment do Azure PowerShell.

  • Implemente o modelo através dos comandos do Azure PowerShell no terminal do Visual Studio Code. Lembre-se de substituir {your-prefix} por uma cadeia diferente. Por exemplo, pode utilizar storage.

    $templateFile = "azuredeploy.json"
    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addfunction-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storagePrefix {your-prefix}
    

Na primeira secção deste código, definiu Azure PowerShell variáveis para o caminho para o ficheiro de modelo que pretende implementar e o nome da implementação. Em seguida, usou o New-AzResourceGroupDeployment comando para implantar o modelo para Azure.

Verificar a implementação

Quando a implementação terminar, vá ao portal do Azure e certifique-se de que está na subscrição da caixa de areia. Para verificar a subscrição, selecione o seu avatar no canto superior direito da página. Selecione Trocar diretório. Na lista, selecione o diretório Sandbox do Microsoft Learn.

  1. No painel esquerdo, selecione Grupos de recursos.

  2. Selecione [nome do grupo de recursos do sandbox].

  3. Na secção Descrição Geral, vê que uma implementação foi efetuada com êxito:

    Captura de ecrã a mostrar o portal do Azure com a descrição geral do grupo de recursos. A secção Implementações mostra que uma implementação foi efetuada com êxito.

  4. Selecione 1 Efetuada Com Êxito para ver os detalhes da implementação:

    Captura de ecrã do portal do Azure a mostrar implementações. Uma implementação está na lista e tem um estado Com Êxito.

  5. Selecione addfunction para ver que recursos foram implementados:

    Captura de ecrã do portal do Azure a mostrar que a conta de armazenamento foi implementada.

  6. Deixe a página aberta no seu browser. Vai verificar as implementações novamente.