Compartilhar via


Criar ambientes com base em modelos do ARM

Você pode usar ambientes do Azure DevTest Labs para provisionar laboratórios de forma fácil e consistente com várias VMs (máquinas virtuais) e recursos paaS (plataforma como serviço). Este artigo descreve como criar ambientes do DevTest Labs com base em modelos do ARM (Azure Resource Manager ). Você pode usar essa abordagem para criar um laboratório para uma aplicação web em múltiplas camadas ou um farm do SharePoint.

Os recursos em um ambiente do DevTest Labs compartilham o mesmo ciclo de vida. Você pode gerenciá-los juntos e acompanhar o custo de recursos de PaaS individuais no ambiente de laboratório, assim como controla os custos de VMs individuais.

Você pode configurar um laboratório para usar modelos de ambiente arm de repositórios de modelos git públicos ou privados. O diagrama a seguir mostra como o DevTest Labs usa um modelo arm de um repositório público ou privado para implantar um ambiente que contém VMs e outros recursos.

Diagrama que mostra como obter modelos do ARM de repositórios Git e usá-los para implantar ambientes com recursos de PaaS.

Observação

Se você precisar gerenciar recursos, políticas e configurações de segurança de PaaS em toda a empresa ou a integração de CI/CD entre estágios de implantação e aplicativos, considere usar o ADE (Ambientes de Implantação) do Azure para criar ambientes. O ADE permite que os desenvolvedores implantem rapidamente a infraestrutura de aplicativos usando modelos baseados em projeto, garantindo ambientes consistentes e seguros para suas equipes de desenvolvimento. Para obter mais informações, consulte a documentação dos Ambientes de Implantação do Azure.

Pré-requisitos

  • Para adicionar ou configurar repositórios de modelo para um laboratório, é necessário ter pelo menos permissões de Colaborador no laboratório.
  • Para criar ambientes Azure DevTest a partir de modelos ARM disponíveis, é necessário ter, pelo menos, permissões de Usuário do DevTest no Lab.
  • Para executar o script do PowerShell na criação do ambiente do Automate, é necessário que o Azure PowerShell tenha o módulo Az.Resources instalado.

Limitações

Os ambientes criados a partir de modelos de ambiente do ARM no DevTest Labs têm as seguintes limitações:

  • Não há suporte para o recurso de desligamento automático para VMs.

  • As seguintes políticas de laboratório não são impostas ou avaliadas:

    • Número de VMs por usuário do laboratório
    • Número de VMs premium por usuário
    • Número de discos premium por usuário

    Por exemplo, mesmo que a política de laboratório permita que cada usuário crie no máximo cinco VMs, o usuário poderá implantar um modelo de ambiente do ARM que cria dezenas de VMs.

Configurar repositórios de modelo para laboratórios

Você pode configurar seu laboratório para usar modelos de ambiente arm do repositório de modelos do ARM público do DevTest Labs e de outros repositórios Git públicos ou privados. Quando você habilita o acesso de laboratório a um repositório de modelos, os usuários do laboratório podem criar ambientes rapidamente selecionando modelos no portal do Azure, semelhante à criação de VMs.

O repositório de modelos do ARM público do DevTest Labs inclui modelos de ambiente pré-autenticados para aplicativos Web do Azure, um cluster do Azure Service Fabric e farms de desenvolvimento do SharePoint. Para uma experiência de introdução suave com recursos de PaaS, os modelos têm parâmetros de entrada mínimos.

Você pode usar os modelos de ambiente público no estado em que se encontram ou personalizá-los para atender às suas necessidades. Você também pode sugerir revisões ou adições a um modelo público enviando uma solicitação de pull para o repositório de modelo público de GitHub.

Você também pode armazenar modelos de ambiente em outros repositórios Git públicos ou privados e adicionar esses repositórios ao seu laboratório para disponibilizar os modelos a todos os usuários do laboratório. Para obter instruções, consulte Armazenar modelos ARM em repositórios Git e Adicionar repositórios de modelos aos laboratórios.

Definir configurações de ambiente público

Você pode habilitar o acesso de laboratório ao repositório de modelos públicos do DevTest Labs para um laboratório novo ou existente. Ao habilitar o acesso ao repositório, você pode selecionar quais modelos de ambiente disponibilizar aos usuários do laboratório.

Configurar o acesso ao ambiente público para um novo laboratório

Para configurar o acesso ao repositório de ambiente público ao criar um novo laboratório, na guia Configurações Básicas , defina a opção Ambientes públicos como Ativar ou Desativar. Essa opção é definida como Ativada por padrão.

Captura de tela que mostra como habilitar repositórios de ambiente público para um laboratório durante o processo de criação do laboratório.

Configurar o acesso ao ambiente público para um laboratório existente

Para habilitar ou desabilitar o acesso ao repositório de ambiente público para um laboratório existente:

  1. Na página Visão geral do portal do Azure para seu laboratório, selecione Configuração e políticas em Configurações no menu de navegação à esquerda.

  2. Na página Configuração e políticas , expanda as bases de máquinas virtuais no menu à esquerda e selecione Ambientes públicos.

  3. Na página Ambientes Públicos , defina a opção Habilitar Ambientes Públicos para esta opção de laboratório como Sim ou Não.

    Captura de tela que mostra como habilitar todos os repositórios de ambiente público para um recurso de laboratório existente.

  4. Clique em Salvar.

Selecionar modelos de ambiente público disponíveis

Quando você habilita o repositório de ambiente público para um laboratório, todos os modelos de ambiente no repositório ficam disponíveis para os usuários do laboratório por padrão. Você pode optar por desabilitar o acesso aos modelos selecionados. Os modelos desabilitados não aparecem mais na lista de ambientes que os usuários podem criar.

Para não permitir o acesso a modelos de ambiente específicos:

  1. Na página do portal do Azure Configurações e políticas>Bases de máquina virtual>, e Ambientes públicos, desmarque as caixas de seleção ao lado dos ambientes que você quer desabilitar.

  2. Clique em Salvar.

Captura de tela que mostra como desmarcar repositórios de ambiente público de um laboratório para desabilitar o acesso dos usuários.

Configurar permissões de usuário do ambiente

Por padrão, os usuários do laboratório são atribuídos à função Leitor em ambientes criados por eles. Os leitores não podem parar, iniciar ou modificar recursos de ambiente, como servidores SQL ou bancos de dados. Para permitir que os usuários do laboratório editem recursos em seus ambientes, você pode conceder a eles a função colaborador no grupo de recursos para seu ambiente.

  1. Na página Visão geral do portal do Azure para seu laboratório, selecione Configuração e políticas em Configurações no menu de navegação à esquerda.

  2. Na página Configuração e políticas , expanda Configurações no menu à esquerda e selecione As configurações do Laboratório.

  3. Na página Configurações do Laboratório em Acesso ao Ambiente, defina a opção direitos de usuário do grupo de recursos como Colaborador.

  4. Clique em Salvar.

Captura de tela que mostra como definir permissões de função de Colaborador para usuários de laboratório no DevTest Labs.

Criar ambientes com base em modelos

Se o laboratório estiver configurado para usar repositórios de modelos públicos ou privados, você poderá criar um ambiente selecionando um modelo do ARM disponível, semelhante à criação de uma VM (máquina virtual). Siga estas etapas para criar um ambiente a partir de um modelo.

  1. Na página Visão geral do portal do Azure para seu laboratório, selecione Meus ambientes em Meu Laboratório no menu de navegação à esquerda.

  2. Na página Meus ambientes , selecione Adicionar.

  3. Na página Escolher uma base , selecione o ambiente a ser criado.

    Captura de tela que mostra os modelos do ARM de ambiente público disponíveis para o recurso de laboratório do DevTest Labs.

  4. No painel Adicionar , insira um nome de ambiente e defina as outras configurações de parâmetro.

    Captura de tela que mostra o painel Adicionar com as configurações para um ambiente do SharePoint.

    • Cada modelo de ambiente arm inclui parâmetros exclusivos. Ao adicionar um ambiente, você deve inserir valores para todos os parâmetros necessários, indicados por asteriscos vermelhos.
    • Alguns valores de parâmetro em um arquivo de modelo ARM azuredeploy.parameters.json produzem campos de configuração em branco sem nenhum valor padrão no painel Adicionar. Esses valores incluem GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEYe GEN-PASSWORD.
    • Você pode usar segredos do Azure Key Vault para parâmetros de cadeia de caracteres seguros , como senhas. Para obter mais informações, consulte Armazenar segredos no Azure Key Vault.
  5. Selecione Adicionar. O ambiente inicia o provisionamento imediatamente.

O processo de provisionamento de um ambiente pode levar muito tempo. O tempo total depende do número de instâncias de serviço, VMs e outros recursos que o DevTest Labs cria como parte do ambiente de laboratório.

Você pode monitorar o status de provisionamento na página Meus ambientes . Selecione Atualizar na barra de ferramentas para atualizar o modo de exibição de página e verificar o status atual. Enquanto o provisionamento estiver em andamento, o status do ambiente será Criando. Após o provisionamento ser concluído, o status será alterado para Pronto.

Captura de tela que mostra como ver o status de provisionamento para o ambiente de laboratório.

Quando o ambiente estiver pronto, você poderá expandir o ambiente na lista Meus ambientes para ver as VMs provisionadas pelo modelo.

Captura de tela que mostra a lista de VMs criadas para o ambiente recém-provisionado.

A implantação cria um novo grupo de recursos para provisionar todos os recursos de ambiente definidos pelo modelo do ARM. Selecione o ambiente na lista Meus ambientes para exibir o grupo de recursos e todos os recursos que o modelo criou.

Captura de tela que mostra o grupo de recursos com todos os recursos do ambiente, incluindo VMs, discos, a rede virtual e muito mais.

Selecione uma VM (máquina virtual) na lista para ver as propriedades da VM e as ações disponíveis, como gerenciamento de configuração, agendas e políticas.

Captura de tela que mostra as ações disponíveis para a VM de ambiente selecionada.

Automatize a criação de ambientes

Se você precisar criar vários ambientes para cenários de desenvolvimento ou teste, poderá usar o Azure PowerShell ou a CLI do Azure para automatizar a implantação de ambiente de modelos do ARM. As etapas a seguir mostram como automatizar a implantação do modelo de ambiente do ARM usando o comando do Azure PowerShell New-AzResource .

Você também pode automatizar a implantação usando o comando az deployment group create da CLI do Azure. Para obter mais informações, confira Implantar recursos com modelos do ARM e a CLI do Azure.

  1. Armazene o modelo de ambiente do ARM em um repositório Git e adicione o repositório ao seu laboratório.

  2. Salve o script do PowerShell a seguir em seu computador como deployenv.ps1. Esse script chama o modelo do ARM para criar o ambiente no laboratório.

    #Requires -Module Az.Resources
    
    [CmdletBinding()]
    
    param (
    # ID of the Azure subscription for the lab
    [string] [Parameter(Mandatory=$true)] $SubscriptionId,
    
    # Name of the lab in which to create the environment
    [string] [Parameter(Mandatory=$true)] $LabName,
    
    # Name of the template repository connected to the lab
    [string] [Parameter(Mandatory=$true)] $RepositoryName,
    
    # Name of the template (folder name in the GitHub repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to create in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to pass to the template. Each parameter is prefixed with "-param_".
    # For example, if the template has a parameter named "TestVMName" with a value of "MyVMName",
    # the string in $Params is "-param_TestVMName MyVMName".
    # This convention allows the script to dynamically handle different templates.
    [Parameter(ValueFromRemainingArguments=$true)]
        $Params
    )
    
    # Sign in to Azure, or comment out this statement to completely automate environment creation.
    Connect-AzAccount
    
    # Select the subscription for your lab.  
    Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
    
    # Get the user ID to use later in the script.
    $UserId = $((Get-AzADUser -UserPrincipalName ((Get-AzContext).Account).Id).Id)
    
    # Get the lab location.
    $lab = Get-AzResource -ResourceType "Microsoft.DevTestLab/labs" -Name $LabName
    if ($lab -eq $null) { throw "Unable to find lab $LabName in subscription $SubscriptionId." }
    
    # Get information about the repository connected to your lab.
    $repository = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType 'Microsoft.DevTestLab/labs/artifactsources' `
        -ResourceName $LabName `
        -ApiVersion 2016-05-15 `
        | Where-Object { $RepositoryName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($repository -eq $null) { throw "Unable to find repository $RepositoryName in lab $LabName." }
    
    # Get information about the ARM template base for the environment.
    $template = Get-AzResource -ResourceGroupName $lab.ResourceGroupName `
        -ResourceType "Microsoft.DevTestLab/labs/artifactSources/armTemplates" `
        -ResourceName "$LabName/$($repository.Name)" `
        -ApiVersion 2016-05-15 `
        | Where-Object { $TemplateName -in ($_.Name, $_.Properties.displayName) } `
        | Select-Object -First 1
    if ($template -eq $null) { throw "Unable to find template $TemplateName in lab $LabName." }
    
    # Build the template parameters by using parameter names and values.
    $parameters = Get-Member -InputObject $template.Properties.contents.parameters -MemberType NoteProperty | Select-Object -ExpandProperty Name
    $templateParameters = @()
    
    # Extract the custom parameters from $Params and format them as name/value pairs.
    $Params | ForEach-Object {
        if ($_ -match '^-param_(.*)' -and $Matches[1] -in $parameters) {
            $name = $Matches[1]                
        } elseif ( $name ) {
            $templateParameters += @{ "name" = "$name"; "value" = "$_" }
            $name = $null #reset name variable
        }
    }
    
    # Create an object to hold the necessary template properties.
    $templateProperties = @{ "deploymentProperties" = @{ "armTemplateId" = "$($template.ResourceId)"; "parameters" = $templateParameters }; }
    
    # Deploy the environment in your lab by using the New-AzResource command.
    New-AzResource -Location $Lab.Location `
        -ResourceGroupName $lab.ResourceGroupName `
        -Properties $templateProperties `
        -ResourceType 'Microsoft.DevTestLab/labs/users/environments' `
        -ResourceName "$LabName/$UserId/$EnvironmentName" `
        -ApiVersion '2016-05-15' -Force
    
    Write-Output "Environment $EnvironmentName completed."
    
  3. Para usar o script, execute o comando a seguir. Atualize os espaços reservados no comando com seus próprios valores de laboratório.

    .\DeployLabEnvironment.ps1 `
        -SubscriptionId "<Subscription ID>" `
        -LabName "<LabName>" `
        -ResourceGroupName "<LabResourceGroupName>" `
        -RepositoryName "<TemplateRepoName>" `
        -TemplateName "<TemplateFolderName>" `
        -EnvironmentName "<EnvironmentName>"