Partilhar via


Criar ambientes a partir de modelos ARM

Pode usar ambientes Azure DevTest Labs para fornecer laboratórios de forma fácil e consistente com múltiplas máquinas virtuais (VMs) e recursos plataforma-como-serviço (PaaS). Este artigo descreve como criar ambientes DevTest Labs a partir de templates Azure Resource Manager (ARM ). Pode usar esta abordagem para criar um laboratório para uma aplicação web multinível ou uma fazenda SharePoint.

Os recursos num ambiente DevTest Labs partilham o mesmo ciclo de vida. Podes geri-los em conjunto e acompanhar o custo dos recursos PaaS individuais no ambiente de laboratório, tal como acompanhas os custos das VMs individuais.

Pode configurar um laboratório para usar templates de ambiente ARM de repositórios públicos ou privados de templates Git. O diagrama seguinte mostra como o DevTest Labs utiliza um modelo ARM de um repositório público ou privado para implementar um ambiente que contém VMs e outros recursos.

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

Nota

Se precisar de gerir recursos, políticas e definições de segurança PaaS em toda a empresa, ou integração CI/CD entre fases de implementação e aplicações, considere usar Ambientes de Implementação Azure (ADE) para criar ambientes. A ADE permite aos programadores implementar rapidamente infraestruturas de aplicações usando modelos baseados em projetos, garantindo ambientes consistentes e seguros para as suas equipas de desenvolvimento. Para mais informações, consulte a documentação dos Ambientes de Implementação do Azure.

Pré-requisitos

  • Para adicionar ou configurar repositórios de modelos para um laboratório, é necessário ter, no mínimo, permissões de Contribuidor no laboratório.
  • Para criar ambientes Azure DevTest a partir dos templates ARM disponíveis, é necessário ter pelo menos permissões de DevTest User em laboratório.
  • Para executar o script PowerShell no ambiente de criação automático, é necessário o Azure PowerShell com o módulo Az.Resources instalado.

Limitações

Os ambientes criados a partir de templates de ambiente ARM nos DevTest Labs apresentam as seguintes limitações:

  • A funcionalidade de auto-desligamento para VMs não é suportada.

  • As seguintes políticas laboratoriais não são aplicadas nem avaliadas:

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

    Por exemplo, mesmo que a política do laboratório permita a cada utilizador criar no máximo cinco VMs, o utilizador pode implementar um template de ambiente ARM que cria dezenas de VMs.

Configurar repositórios de modelos para laboratórios

Pode configurar o seu laboratório para usar modelos de ambiente ARM do repositório público ARM do DevTest Labs e de outros repositórios Git públicos ou privados. Quando ativa o acesso de laboratório a um repositório de templates, os utilizadores de laboratório podem rapidamente criar ambientes selecionando templates no portal Azure, semelhante à criação de VMs.

O repositório público de templates ARM do DevTest Labs inclui templates de ambiente pré-escritos para Azure Web Apps, um cluster Azure Service Fabric e fazendas SharePoint de desenvolvimento. Para uma experiência de início fluida com recursos PaaS, os templates têm parâmetros de entrada mínimos.

Você pode usar os modelos de ambiente público como estão 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 pull no repositório de modelos públicos do GitHub.

Também pode armazenar modelos de ambiente noutros repositórios Git públicos ou privados, e adicionar esses repositórios ao seu laboratório para tornar os templates disponíveis a todos os utilizadores do laboratório. Para instruções, consulte Armazenar templates ARM nos repositórios Git e Adicionar repositórios de templates aos laboratórios.

Definir configurações de ambiente público

Pode ativar o acesso do laboratório ao repositório público de templates do DevTest Labs para um laboratório novo ou existente. Quando ativa o acesso ao repositório, pode selecionar quais os modelos de ambiente a disponibilizar aos utilizadores do laboratório.

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

Para configurar o acesso ao repositório do ambiente público quando criares um novo laboratório, no separador Definições Básicas , define a opção de ambientes públicos para Ligado ou Desligado. Esta opção está definida como Ligado por defeito.

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 ativar ou desativar o acesso a repositórios de ambiente público para um laboratório existente:

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

  2. Na página de Configuração e políticas , expanda as bases da máquina virtual no menu esquerdo e selecione ambientes públicos.

  3. Na página de ambientes públicos , defina a opção Ativar Ambientes Públicos para este laboratóriocomo 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. Selecione Guardar.

Selecionar modelos de ambiente público disponíveis

Quando ativas o repositório público de ambiente para um laboratório, todos os modelos de ambiente no repositório ficam disponíveis para os utilizadores do teu laboratório por defeito. Pode optar por desativar o acesso a modelos selecionados. Os modelos desativados já não aparecem na lista de ambientes que os utilizadores podem criar.

Para impedir o acesso a modelos específicos do ambiente:

  1. Na página de Configuração e políticas> do portal Azure do teu laboratórioBases> de máquinas virtuaisAmbientes públicos, desmarca as caixas de seleção ao lado dos ambientes que queres desativar.

  2. Selecione Guardar.

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

Configurar permissões de utilizador do ambiente

Por defeito, os utilizadores do laboratório são designados ao papel de Leitor nos ambientes que criam. Os leitores não podem parar, iniciar ou modificar recursos do ambiente como servidores SQL ou bases de dados. Para permitir que os utilizadores do laboratório editem recursos nos seus ambientes, pode conceder-lhes o papel de Contribuinte no grupo de recursos do seu ambiente.

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

  2. Na página de Configuração e políticas , expanda Definições no menu esquerdo e selecione Definições de laboratório.

  3. Na página de definições do Laboratório , em Acesso ao Ambiente, defina a opção de direitos de utilizador do grupo de Recursos para Contribuidor.

  4. Selecione Guardar.

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 a partir de modelos

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

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

  2. Na página Os Meus Ambientes , selecione Adicionar.

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

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

  4. No painel de Adicionar , introduza um nome de Ambiente e configure as outras definições de parâmetros.

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

    • Cada modelo de ambiente ARM inclui parâmetros únicos. Quando adiciona um ambiente, deve introduzir valores para todos os parâmetros necessários, indicados por asteriscos vermelhos.
    • Alguns valores de parâmetros num ficheiro de modelo ARM azuredeploy.parameters.json produzem campos de definição em branco sem valor predefinido no painel Adicionar. Estes valores incluem GEN-UNIQUE, GEN-UNIQUE-[N], GEN-SSH-PUB-KEY, e GEN-PASSWORD.
    • Podes usar segredos do Azure Key Vault para parâmetros string segura, como palavras-passe. Para mais informações, consulte Guardar segredos no Azure Key Vault.
  5. Selecione Adicionar. O ambiente começa a provisionar imediatamente.

O processo para provisionar 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.

Pode monitorizar o estado do provisionamento na página Meus ambientes . Selecione Atualizar na barra de ferramentas para atualizar a vista da página e verificar o estado atual. Enquanto o provisionamento está em andamento, o status do ambiente está sendo criado. Após a conclusão do provisionamento, o status muda para Pronto.

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

Quando o ambiente estiver pronto, podes expandir o ambiente na lista Meus ambientes para veres as VMs que o template provisionou.

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

A implementação cria um novo grupo de recursos para provisionar todos os recursos ambientais definidos pelo modelo ARM. Selecione o ambiente na lista Meus ambientes para ver 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 máquina virtual (VM) na lista para ver as propriedades da VM e as ações disponíveis, como gerir configuração, agendamentos e políticas.

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

Automatizar a criação de ambientes

Se precisares de criar múltiplos ambientes para desenvolvimento ou testes, podes usar o Azure PowerShell ou o Azure CLI para automatizar a implementação de ambientes a partir de templates ARM. Os passos seguintes mostram como automatizar a implementação de templates em ambiente ARM usando o comando Azure PowerShell New-AzResource .

Também pode automatizar a implementação usando o comando Azure CLI az deployment group create . Para obter mais informações, consulte Implantar recursos com modelos ARM e a CLI do Azure.

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

  2. Guarde o seguinte script PowerShell no seu computador como deployenv.ps1. Este script chama o modelo 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 seguinte comando. Atualiza os marcadores no comando com os teus próprios valores de laboratório.

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