Criar ambientes multi-VM e recursos PaaS com modelos do Azure Resource Manager

Azure DevTest Labs ambientes permitem aos utilizadores implantar facilmente infraestruturas complexas de forma consistente dentro dos limites do laboratório. Pode utilizar modelos do Azure Resource Manager para criar ambientes com conjuntos de recursos em DevTest Labs. Estes ambientes podem conter quaisquer recursos Azure que os modelos do Gestor de Recursos possam criar.

Pode adicionar facilmente uma máquina virtual (VM) de cada vez a um laboratório utilizando o portal Azure. No entanto, cenários como aplicações web multi-camadas ou uma fazenda SharePoint precisam de um mecanismo para criar vários VMs num único passo. Ao utilizar os modelos do Azure Resource Manager, pode definir a infraestrutura e configuração da sua solução Azure e implementar repetidamente vários VMs num estado consistente.

Os modelos do Gestor de Recursos Azure também fornecem os seguintes benefícios:

  • Os modelos do Gestor de Recursos Azure são carregados diretamente do repositório de controlo de fontes da GitHub ou Azure Repos.
  • Os seus utilizadores podem criar um ambiente escolhendo um modelo de Gestor de Recursos Azure configurado a partir do portal Azure, tal como fazem com outros tipos de bases VM.
  • Você pode fornecendo recursos Azure PaaS, bem como IaaS VMs em um ambiente a partir de um modelo de Gestor de Recursos Azure.
  • Você pode rastrear o custo de ambientes no laboratório, além de VMs individuais criados por outros tipos de bases. Os recursos paaS são criados e aparecerão no rastreio de custos. No entanto, a paragem automática da VM não se aplica aos recursos paaS.

Para saber mais sobre os benefícios de usar modelos de Gestor de Recursos para implementar, atualizar ou eliminar muitos recursos de laboratório numa única operação, consulte benefícios de usar modelos de Gestor de Recursos.

Nota

Quando utiliza um modelo de Gestor de Recursos como base para criar VMs de laboratório, existem algumas diferenças entre a criação de múltiplos VMs ou um único VM. Para obter mais informações, consulte utilize o modelo de Gestor de Recursos Azure de uma máquina virtual.

Use ambientes públicos de Laboratórios DevTest

Azure DevTest Labs tem um repositório público de modelos Azure Resource Manager que você pode usar para criar ambientes sem ter que se conectar a uma fonte de GitHub externa. Este repositório público é semelhante ao repositório público de artefactos que está disponível no portal Azure para todos os laboratórios que cria. O repositório de ambiente permite-lhe começar rapidamente com modelos de ambiente pré-autoria que têm poucos parâmetros de entrada. Estes modelos proporcionam-lhe uma experiência de início suave para os recursos paaS dentro de laboratórios.

No repositório público, a equipa da DevTest Labs e outros criaram e partilharam modelos frequentemente utilizados como Azure Web Apps, Service Fabric Cluster e um ambiente de desenvolvimento SharePoint Farm. Pode usar estes modelos diretamente ou personalizá-los de acordo com as suas necessidades. Para obter mais informações, consulte Configure e utilize ambientes públicos em DevTest Labs. Depois de criar os seus próprios modelos, pode armazená-los neste repositório para partilhá-los com outros, ou configurar o seu próprio repositório Git.

Crie os seus próprios repositórios de modelo

Como uma das melhores práticas com infraestruturas como código e configuração como código, você deve gerir modelos de ambiente no controlo de fontes. Azure DevTest Labs segue esta prática, e carrega todos os modelos do Azure Resource Manager diretamente dos repositórios de GitHub ou Azure Repos. Como resultado, pode utilizar modelos de Gestor de Recursos em todo o ciclo de libertação, desde o ambiente de teste até ao ambiente de produção.

Existem várias regras a seguir para organizar os seus modelos de Gestor de Recursos Azure num repositório:

  • Você deve nomear o ficheiro de modelo principal azuredeploy.jsem.

  • Se pretender utilizar os valores de parâmetro definidos num ficheiro de parâmetros, o ficheiro de parâmetros deve ser nomeado azuredeploy.parameters.jsem.

    Pode utilizar os parâmetros _artifactsLocation e _artifactsLocationSasToken construir os parâmetrosLink URI value, permitindo que a DevTest Labs gere automaticamente modelos aninhados. Para obter mais informações, consulte implementar modelos aninhados do Gestor de Recursos Azure para testar ambientes.

  • Pode definir metadados para especificar o nome e descrição do modelo num ficheiro nomeado metadata.jsem, da seguinte forma:

    {
      "itemDisplayName": "<your template name>",
      "description": "<description of the template>"
    }
    

Principais ficheiros de modelo do Gestor de Recursos Azure

Adicione repositórios de modelo ao laboratório

Depois de criar e configurar o seu repositório, pode adicioná-lo ao seu laboratório utilizando o portal Azure:

  1. Inicie sessão no portal do Azure.

  2. Selecione Todos os Serviços e, em seguida, selecione DevTest Labs da lista.

  3. Da lista de laboratórios, selecione o laboratório que quiser.

  4. No painel de visão geral do laboratório, selecione Configuração e políticas.

    Configuração e políticas

  5. A partir da lista de configurações e definições de políticas, selecione Repositórios. O repositório de artefactos públicos é gerado automaticamente para todos os laboratórios, e conecta-se ao repositório público de GitHub de DevTest Labs.

  6. Para adicionar o seu repositório de modelo de Gestor de Recursos Azure, selecione Adicionar.

    Repo público

  7. No painel de repositórios, insira as seguintes informações:

    • Nome: Introduza um nome de repositório para utilizar no laboratório.
    • URL do clone git: Introduza o URL do clone git HTTPS a partir de GitHub ou Azure Repos.
    • Ramo (opcional): Introduza o nome do ramo para aceder às definições do seu modelo de Gestor de Recursos Azure.
    • Ficha de acesso pessoal: Introduza o token de acesso pessoal que é usado para aceder de forma segura ao seu repositório.
      • Para obter o seu token da Azure Repos, no seu perfil, selecione Configurações de Acesso pessoal de Segurança > > do Utilizador .
      • Para obter o seu token de GitHub, no seu perfil, selecione Definições > Developer Definições > Fichas de Acesso Pessoal.
    • Caminhos de pastas: Introduza o caminho da pasta que é relativo ao seu URI clone Git para definições de artefactos ou definições do seu modelo de Gestor de Recursos Azure.
  8. Selecione Guardar.

    Adicione novo repositório

Uma vez que adicione um modelo de Gestor de Recursos Azure ao laboratório, os seus utilizadores de laboratório podem criar ambientes usando o modelo.

Configure direitos de acesso para utilizadores de laboratório

Os utilizadores de laboratório têm o papel de Reader por padrão, por isso não podem alterar os recursos num grupo de recursos ambientais. Por exemplo, não podem parar ou iniciar os seus recursos.

Para dar aos seus utilizadores de laboratório função contributiva para que possam editar os recursos nos seus ambientes, siga estes passos:

  1. No portal Azure, no painel de visão geral do seu laboratório, selecione Configuração e políticas, e, em seguida, selecione as definições de Laboratório.

  2. No painel de definições do Laboratório, selecione Contributor, e, em seguida, selecione Save para conceder permissões de escrita aos utilizadores de laboratório.

    Configure direitos de acesso ao utilizador do laboratório

A secção seguinte passa pela criação de ambientes a partir de um modelo de Gestor de Recursos Azure.

Criar ambientes a partir de modelos no portal Azure

Uma vez que adicione um modelo de Gestor de Recursos Azure ao laboratório, os seus utilizadores de laboratório podem criar ambientes no portal Azure seguindo estes passos:

  1. Inicie sessão no portal do Azure.

  2. Selecione Todos os Serviços e, em seguida, selecione DevTest Labs da lista.

  3. Da lista de laboratórios, selecione o laboratório que quiser.

  4. Na página do laboratório, selecione Add.

  5. O painel de base Escolha um painel de base exibe as imagens base que pode utilizar, com os modelos do Gestor de Recursos Azure listados primeiro. Selecione o modelo de Gestor de Recursos Azure que pretende.

    Escolher uma base

  6. No painel Add, introduza um valor de nome Ambiente para mostrar aos utilizadores do ambiente.

    O modelo Azure Resource Manager define o resto dos campos de entrada. Se oazuredeploy.parameter.jsdo modelo no ficheiro definir valores predefinidos, os campos de entrada mostram esses valores.

    Para parâmetros de tipo de corda segura, pode utilizar segredos do seu Cofre de Chaves Azure. Para aprender sobre guardar segredos num cofre chave e usá-los ao criar recursos de laboratório, consulte os segredos da Loja no Cofre da Chave Azure.

    Adicione painel

    Nota

    Os seguintes valores de parâmetro não aparecem nos campos de entrada, mesmo que o modelo os especifique. Em vez disso, o formulário mostra campos de entrada em branco onde os utilizadores de laboratório devem introduzir valores ao criar o ambiente.

    • GEN-UNIQUE
    • GEN-UNIQUE-[N]
    • GEN-SSH-PUB-KEY
    • GEN-PASSWORD
  7. Selecione Adicionar para criar o ambiente.

    O ambiente começa a provisões imediatamente, com o estado de exibição na lista de máquinas virtuais My. O laboratório cria automaticamente um novo grupo de recursos para a provisionar todos os recursos definidos no modelo Azure Resource Manager.

  8. Assim que o ambiente for criado, selecione o ambiente na lista my virtual machines para abrir o painel de grupo de recursos e navegar em todos os recursos que o ambiente aprovisionado.

    Recursos ambientais

    Também pode expandir o ambiente para ver apenas a lista de VMs do ambiente aprovisionado.

    A minha lista de máquinas virtuais

  9. Selecione qualquer um dos ambientes para visualizar as ações disponíveis, tais como a aplicação de artefactos, a anexação de discos de dados, a alteração do tempo de paragem automática, e muito mais.

    Ações ambientais

Automatizar a criação de ambiente com a PowerShell

É possível usar o portal Azure para adicionar um único ambiente a um laboratório, mas quando um cenário de desenvolvimento ou teste deve criar vários ambientes, a implementação automatizada é uma melhor experiência.

Antes de prosseguir, certifique-se de que tem um modelo de Gestor de Recursos Azure que define os recursos para criar. Adicione e configuure o modelo num repositório de Gite adicione o repositório ao laboratório.

O seguinte guião de amostra cria um ambiente no seu laboratório. Os comentários ajudam-no a compreender melhor o guião.

  1. Guarde o seguinte script PowerShell para o seu disco rígido à medida quedeployenv.ps1.

    Nota

    Este artigo foi atualizado para utilizar o módulo Azure Az PowerShell. O módulo Az PowerShell é o módulo do PowerShell recomendado para interagir com o Azure. Para começar a utilizar o módulo Azure PowerShell, veja Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.

    #Requires -Module Az.Resources
    
    [CmdletBinding()]
    
    param (
    # ID of the Azure Subscription for the lab
    [string] [Parameter(Mandatory=$true)] $SubscriptionId,
    
    # Name of the existing lab in which to create the environment
    [string] [Parameter(Mandatory=$true)] $LabName,
    
    # Name of the connected repository in the lab
    [string] [Parameter(Mandatory=$true)] $RepositoryName,
    
    # Name of the template (folder name in the Git repository)
    [string] [Parameter(Mandatory=$true)] $TemplateName,
    
    # Name of the environment to be created in the lab
    [string] [Parameter(Mandatory=$true)] $EnvironmentName,
    
    # The parameters to be passed 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 will have the form: -param_TestVMName MyVMName.
    # This convention allows the script to dynamically handle different templates.
    [Parameter(ValueFromRemainingArguments=$true)]
        $Params
    )
    
    # Sign in to Azure.
    # Comment out the following statement to completely automate the environment creation.
    Connect-AzAccount
    
    # Select the subscription that has the lab.  
    Set-AzContext -SubscriptionId $SubscriptionId | Out-Null
    
    # Get information about the user, specifically the user ID, which is used later in the script.  
    $UserId = $((Get-AzADUser -UserPrincipalName ((Get-AzContext).Account).Id).Id)
    
    # Get information about the lab, such as 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 in the 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 Resource Manager 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 with parameter name 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 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
        }
    }
    
    # Once name/value pairs are isolated, create an object to hold the necessary template properties.
    $templateProperties = @{ "deploymentProperties" = @{ "armTemplateId" = "$($template.ResourceId)"; "parameters" = $templateParameters }; }
    
    # Now, create or deploy the environment in the 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."
    
  2. Execute o script da seguinte forma, utilizando os seus valores específicos para SubscriptionId, LabName, ResourceGroupName, RepositoryName, TemplateName (pasta no repo Git) e EnvironmentName.

    ./deployenv.ps1 -SubscriptionId "000000000-0000-0000-0000-0000000000000" -LabName "mydevtestlab" -ResourceGroupName "mydevtestlabRG000000" -RepositoryName "myRepository" -TemplateName "My Environment template name" -EnvironmentName "myGroupEnv"
    

Também pode usar o Azure CLI para implementar recursos com modelos de Gestor de Recursos. Para obter mais informações, consulte implementar recursos com modelos de Gestor de Recursos e Azure CLI.

Nota

Apenas um utilizador com permissões de proprietário de laboratório pode criar VMs a partir de um modelo de Gestor de Recursos utilizando Azure PowerShell. Se pretender automatizar a criação de VM utilizando um modelo de Gestor de Recursos e tiver apenas permissões de utilizador, pode utilizar o comando CLI az lab vm criar.

Limitações do modelo do Gestor de Recursos em Laboratórios DevTest

Considere estas limitações ao utilizar modelos de Gestor de Recursos em Laboratórios DevTest:

  • Não é possível criar fórmulas ou imagens personalizadas a partir de VMs de laboratório que foram criados a partir de um modelo de Gestor de Recursos.

  • A maioria das políticas não são avaliadas quando implementa modelos de Gestor de Recursos.

Por exemplo, pode ter uma política de laboratório que um utilizador pode criar apenas cinco VMs. No entanto, um utilizador pode implementar um modelo de Gestor de Recursos que cria dezenas de VMs. As políticas que não são avaliadas incluem:

  • Número de VMs por utilizador

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

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

Passos seguintes