Exercício – adicionar parâmetros e decoradores

Concluído

Observação

Na primeira vez que você ativar uma área restrita e aceitar os termos, sua conta Microsoft será associada a um novo diretório do Azure chamado Área Restrita do Microsoft Learn. Você também será adicionado a uma assinatura especial chamada Assinatura do Concierge.

Como parte da migração de aplicativos de RH, você está criando um modelo de Bicep para implantar recursos do Azure. Neste exercício, você criará um Plano do Serviço de Aplicativo do Azure e um aplicativo do Serviço de Aplicativo. Você aplicará decoradores a cada parâmetro para garantir que eles sempre contenham os valores esperados.

Durante o processo, você executará as seguintes tarefas:

  • Crie um arquivo Bicep que inclui parâmetros e variáveis.
  • Adicione decoradores aos parâmetros.
  • Testar a implantação para garantir que o modelo seja válido.

Este exercício usa a extensão Bicep para Visual Studio Code. É necessário que você instale essa extensão no Visual Studio Code.

Criar um modelo de Bicep com parâmetros

  1. Abra o Visual Studio Code.

  2. Crie um arquivo chamado main.bicep.

  3. Salve o arquivo vazio para que Visual Studio Code carregue as ferramentas Bicep.

    Você pode selecionar Arquivo>Salvar Como ou Ctrl+S no Windows (⌘+S no macOS). Lembre-se de onde você salvou o arquivo. Por exemplo, você pode criar uma pasta scripts para salvá-lo.

  4. Adicione o conteúdo a seguir ao arquivo. Você implantará o modelo em breve. Insira o conteúdo por conta própria em vez de copiar e colar para que você possa ver como o conjunto de ferramentas ajuda a criar arquivos Bicep.

    param environmentName string = 'dev'
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    param appServicePlanInstanceCount int = 1
    param appServicePlanSku object = {
      name: 'F1'
      tier: 'Free'
    }
    param location string = 'eastus'
    
    var appServicePlanName = '${environmentName}-${solutionName}-plan'
    var appServiceAppName = '${environmentName}-${solutionName}-app'
    

    Aqui você está criando vários parâmetros que usam diversos tipos. Você vai definir valores padrão para cada parâmetro. Alguns dos valores padrão incluem interpolação de cadeia de caracteres, a função uniqueString().

    Dica

    A função uniqueString() é útil para criar nomes de recursos globalmente exclusivos. Ela retorna uma cadeia de caracteres que é a mesma em cada implantação para o mesmo grupo de recursos, mas diferente quando você implanta em diferentes grupos de recursos ou assinaturas.

    Você também vai definir variáveis que constroem os nomes do plano do Serviço de Aplicativo do Azure e do aplicativo do Serviço de Aplicativo. Seus valores incluem alguns dos parâmetros que você especificou. Os valores de parâmetro podem ser substituídos pelo usuário que executa a implantação, mas os valores das variáveis não podem ser substituídos.

    Dica

    Você está especificando que o parâmetro location deve ser definido como westus3. Normalmente, você criaria recursos no mesmo local que o grupo de recursos usando a propriedade resourceGroup().location. Mas, ao trabalhar com a área restrita do Microsoft Learn, você precisa usar determinadas regiões do Azure que não correspondem ao local do grupo de recursos.

  5. No arquivo main.bicep no Visual Studio Code, adicione o seguinte código ao final do arquivo:

    resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSku.name
        tier: appServicePlanSku.tier
        capacity: appServicePlanInstanceCount
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    

    Observe que os recursos usam os valores dos parâmetros que você definiu.

  6. Salve as alterações no arquivo.

Adicionar descrições de parâmetros

  1. No arquivo main.bicep no Visual Studio Code, adicione o decorador @description diretamente acima de cada parâmetro que você criou na tarefa anterior. Os parâmetros devem semelhantes a este exemplo:

    @description('The name of the environment. This must be dev, test, or prod.')
    param environmentName string = 'dev'
    
    @description('The unique name of the solution. This is used to ensure that resource names are unique.')
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    
    @description('The number of App Service plan instances.')
    param appServicePlanInstanceCount int = 1
    
    @description('The name and tier of the App Service plan SKU.')
    param appServicePlanSku object = {
      name: 'F1'
      tier: 'Free'
    }
    
    @description('The Azure region into which the resources should be deployed.')
    param location string = 'eastus'
    
  2. Salve as alterações no arquivo.

Limitar os valores de entrada

Sua empresa de brinquedos implantará o aplicativo de RH a três ambientes: dev, test e prod. Você limitará o parâmetro environmentName para permitir apenas esses três valores.

  1. No arquivo main.bicep no Visual Studio Code, localize o parâmetro environmentName. Insira um decorador @allowed abaixo do decorador @description. Depois que você terminar, o parâmetro deverá ser semelhante a este exemplo:

    @description('The name of the environment. This must be dev, test, or prod.')
    @allowed([
      'dev'
      'test'
      'prod'
    ])
    param environmentName string = 'dev'
    

    Observe que você está limitando o valor do parâmetro environmentName somente para dev, test e prod. Se mais ambientes forem adicionados no futuro, você precisará atualizar essa lista.

  2. Salve as alterações no arquivo.

Limitar comprimentos de entrada

O parâmetro solutionName é usado para gerar os nomes de recursos. Você deseja impor um comprimento mínimo de 5 caracteres e um comprimento máximo de 30 caracteres.

  1. No arquivo main.bicep no Visual Studio Code, localize o parâmetro solutionName. Adicione os decoradores @minLength e @maxLength abaixo do decorador @description. Depois que você terminar, o parâmetro deverá ser semelhante a este exemplo:

    @description('The unique name of the solution. This is used to ensure that resource names are unique.')
    @minLength(5)
    @maxLength(30)
    param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'
    
  2. Salve as alterações no arquivo.

Limitar valores numéricos

Em seguida, você garantirá que o parâmetro appServicePlanInstanceCount só permita valores entre 1 e 10.

  1. No arquivo main.bicep no Visual Studio Code, localize o parâmetro appServicePlanInstanceCount. Adicione os decoradores @minValue e @maxValue abaixo do decorador @description. Depois que você terminar, o parâmetro deverá ser semelhante a este exemplo:

    @description('The number of App Service plan instances.')
    @minValue(1)
    @maxValue(10)
    param appServicePlanInstanceCount int = 1
    
  2. Salve as alterações no arquivo.

Verificar o arquivo Bicep

Depois de concluir todas as alterações anteriores, o arquivo Bicep deverá ser semelhante a este exemplo:

@description('The name of the environment. This must be dev, test, or prod.')
@allowed([
  'dev'
  'test'
  'prod'
])
param environmentName string = 'dev'

@description('The unique name of the solution. This is used to ensure that resource names are unique.')
@minLength(5)
@maxLength(30)
param solutionName string = 'toyhr${uniqueString(resourceGroup().id)}'

@description('The number of App Service plan instances.')
@minValue(1)
@maxValue(10)
param appServicePlanInstanceCount int = 1

@description('The name and tier of the App Service plan SKU.')
param appServicePlanSku object = {
  name: 'F1'
  tier: 'Free'
}

@description('The Azure region into which the resources should be deployed.')
param location string = 'eastus'

var appServicePlanName = '${environmentName}-${solutionName}-plan'
var appServiceAppName = '${environmentName}-${solutionName}-app'

resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: appServicePlanSku.name
    tier: appServicePlanSku.tier
    capacity: appServicePlanInstanceCount
  }
}

resource appServiceApp 'Microsoft.Web/sites@2023-12-01' = {
  name: appServiceAppName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
  }
}

Caso contrário, copie-o ou ajuste o modelo para corresponder ao exemplo.

Implantar o modelo Bicep no Azure

Para implantar esse modelo no Azure, será necessário entrar em sua conta do Azure do terminal do Visual Studio Code. Verifique se você tem a CLI do Azure instalada e lembre-se de entrar com a mesma conta que usou para ativar a área restrita.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o bash, o shell correto será aberto e você poderá passar para a próxima seção.

    Captura de tela da janela do terminal do Visual Studio Code com a opção bash mostrada.

  3. Se um shell diferente de bash for exibido, selecione a seta suspensa do shell e selecione Azure Cloud Shell (Bash).

    Captura de tela da janela do terminal do Visual Studio Code, com o menu suspenso do shell do terminal mostrado e o Padrão Git Bash selecionado.

  4. Na lista de shells de terminal, selecione bash.

    Captura de tela da janela do terminal do Visual Studio Code com o terminal do bash selecionado.

  5. No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:

    cd templates
    

Instalar o Bicep

Veja se você tem a versão mais recente do Bicep executando o seguinte comando:

az bicep install && az bicep upgrade

Entrar no Azure

  1. No terminal do Visual Studio Code, entre no Azure executando o seguinte comando:

    az login
    
  2. No navegador que é aberto, entre em sua conta do Azure.

    O terminal do Visual Studio Code exibe uma lista das assinaturas associadas a essa conta.

  3. Defina a assinatura padrão para todos os comandos da CLI do Azure que você executar nesta sessão.

    az account set --subscription "Concierge Subscription"
    

    Observação

    Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. Obtenha as IDs da Assinatura do Concierge.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Defina a assinatura padrão usando a ID da assinatura. Substitua {sua ID da assinatura} pela ID da Assinatura de Concierge mais recente.

    az account set --subscription {your subscription ID}
    

Definir o grupo de recursos padrão

Ao usar a CLI do Azure, você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos da CLI do Azure neste exercício. Defina como padrão o grupo de recursos criado para você no ambiente de área restrita.

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

Implantar o modelo no Azure usando a CLI do Azure

Execute o código a seguir no terminal do Visual Studio Code para implantar o modelo Bicep no Azure. Você não precisa especificar os valores de parâmetros porque eles têm valores padrão especificados. Esse processo pode levar um minuto ou dois para ser concluído e você verá uma implantação bem-sucedida.

az deployment group create --template-file main.bicep

Você verá Running... no terminal.

Para implantar esse modelo no Azure, entre na sua conta do Azure por meio do terminal do Visual Studio Code. Verifique se você instalou o Azure PowerShell e entre na mesma conta que ativou a área restrita.

  1. No menu Terminal, selecione Novo Terminal. A janela do terminal geralmente é aberta na metade inferior da tela.

  2. Se o shell mostrado no lado direito da janela do terminal for o powershell ou o pwsh, o shell correto será aberto e você poderá passar para a próxima seção.

    Captura de tela da janela do terminal do Visual Studio Code, com a opção pwsh exibida na lista suspensa do shell.

  3. Se aparecer um shell diferente do powershell ou pwsh, selecione a seta da lista de seleção do shell e escolha PowerShell.

    Captura de tela da janela do terminal do Visual Studio Code, com a lista suspensa do shell do terminal exibida e o PowerShell selecionado.

  4. Na lista de shells de terminal, selecione powershell ou pwsh.

    Captura de tela da janela do terminal do Visual Studio Code com o terminal do PowerShell selecionado.

  5. No terminal, vá até o diretório no qual você salvou o modelo. Por exemplo, se você salvou o modelo na pasta modelos, use este comando:

    Set-Location -Path templates
    

Instalar a CLI do Bicep

Para usar o Bicep no Azure PowerShell, instale a CLI do Bicep.

Entrar no Azure usando o Azure PowerShell

  1. No terminal do Visual Studio Code, execute o seguinte comando:

    Connect-AzAccount
    

    Um navegador será aberto para que seja possível entrar na sua conta do Azure.

  2. Após entrar no Azure, o terminal exibirá uma lista das assinaturas associadas a essa conta.

    Se você ativou a área restrita, será exibida uma assinatura chamada Assinatura do Concierge. Use-a no restante do exercício.

  3. Defina a assinatura padrão para todos os comandos do Azure PowerShell que você executar nesta sessão.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Observação

    Se você usou mais de uma área restrita recentemente, o terminal poderá exibir mais de uma instância da Assinatura do Concierge. Nesse caso, use as duas próximas etapas para definir uma delas como a assinatura padrão. Se o comando anterior tiver sido bem-sucedido e apenas uma Assinatura do Concierge estiver listada, ignore as duas próximas etapas.

  4. Obtenha a ID da assinatura. Executar o comando a seguir lista as suas assinaturas e as respectivas IDs. Procure Concierge Subscription e copie a ID da segunda coluna. É algo semelhante a aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.

    Get-AzSubscription
    
  5. Altere a sua assinatura ativa para Assinatura de Concierge. Lembre-se de substituir {Sua ID da assinatura} por aquela que você copiou.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

Definir o grupo de recursos padrão

Você pode definir o grupo de recursos padrão e omitir o parâmetro do restante dos comandos do Azure PowerShell neste exercício. Defina esse padrão como o grupo de recursos criado para você no ambiente de área restrita.

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

Implantar o modelo no Azure usando o PowerShell

Implante o modelo no Azure usando o comando do Azure PowerShell a seguir no terminal. Você não precisa especificar os valores de parâmetros porque eles têm valores padrão especificados. Esse processo pode levar um minuto ou dois para ser concluído e você verá uma implantação bem-sucedida.

New-AzResourceGroupDeployment -TemplateFile main.bicep

Verificar a implantação

  1. Vá para o portal do Azure e verifique se você está na assinatura da área restrita:

    1. Selecione seu avatar no canto superior direito da página.
    2. Selecione Mudar diretório. Na lista, escolha o diretório Área restrita do Microsoft Learn.
  2. No painel do lado esquerdo, selecione Grupos de recursos.

  3. Selecione [nome do grupo de recursos de área restrita].

  4. Na Visão Geral, você pode ver que a implantação foi bem-sucedida.

    Captura de tela da interface do portal do Azure para a visão geral do grupo de recursos com a seção de implantações mostrando uma implantação bem-sucedida.

  5. Selecione 1 Êxito para ver os detalhes da implantação.

    Captura de tela da interface do portal do Azure para as implantações com a implantação em questão listada e um status de êxito.

  6. Selecione a implantação chamada principal para ver quais recursos foram implantados e selecione Detalhes da implantação para expandi-la. Nesse caso, há um Plano do Serviço de Aplicativo e um aplicativo.

    Captura de tela da interface do portal do Azure da implantação específica, com um Plano do Serviço de Aplicativo e um aplicativo listados.

  7. No menu à esquerda, selecione Entradas.

    Captura de tela da interface do portal do Azure da implantação específica, com o item de menu

  8. Observe que os parâmetros e os valores estão listados.

    Captura de tela da interface do portal do Azure para a implantação específica exibindo os valores de parâmetros.

  9. Deixe a página aberta no navegador. Você verificará as implantações novamente mais tarde.