Exercício: criar recursos do Azure com o Azure PowerShell usando um script

Concluído

Nesta unidade, você continuará com o exemplo de uma empresa que desenvolve ferramentas de administração do Linux. O objetivo é usar máquinas virtuais (VMs) do Linux para que potenciais clientes possam testar seu software. Com um grupo de recursos já configurado, chegou a hora de criar as VMs.

Sua empresa conseguir um estande em uma grande feira comercial do Linux. Você pretende montar uma área de demonstração com três terminais, cada um conectado a uma VM do Linux diferente. Para garantir que as VMs comecem do zero todas as manhãs, é necessário deletá-las e recriá-las ao final de cada dia. Fazer isso manualmente após um dia cansativo é o mesmo que pedir pra ter problemas, então você precisa programar um script em PowerShell para automatizar essa tarefa.

Escrever um script para criar máquinas virtuais

Siga estas etapas para programar um script no Azure Cloud Shell que automatiza a criação de máquinas virtuais.

Observação

Normalmente, você se autenticaria no Azure usando suas credenciais com Connect-AzAccount, mas no Cloud Shell, você já está autenticado, então não precisa se preocupar com isso.

  1. Mude para sua pasta base:

    Set-Location -Path $HOME
    
  2. Crie um novo arquivo de script em PowerShell:

    New-Item -Name ConferenceDailyReset.ps1 -ItemType File
    
  3. Abra o editor integrado do Visual Studio Code ( VS Code):

    code ./ConferenceDailyReset.ps1
    

    Dica

    O editor integrado do Cloud Shell também dá suporte a vim, nano e emacs, caso você prefira usar um desses editores.

  4. Defina um parâmetro para o nome do seu grupo de recursos:

    Adicione a seguinte linha ao script:

    param (
        [string]$ResourceGroupName
    )
    
  5. Solicite as credenciais de administrador da VM:

    $adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'
    
  6. Crie um loop para executar três vezes:

    $vms = 'web','app','sql'
    foreach ($vm in $vms) {
        $vm
    }
    
  7. No loop, retorne o nome de cada VM:

    Write-Output "Creating VM: $vm"
    
  8. Crie uma VM usando a variável $vm:

    $azVmParams = @{
        ResourceGroupName = $ResourceGroupName
        Name              = $vm
        Credential        = $adminCredential
        Image             = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts         = 22
    }
    New-AzVm @azVmParams
    
  9. Salve o arquivo:

    Para salvar o script, use o menu contextual de reticências (...) no canto superior direito do editor ou o atalho de teclado Ctrl + S.

Script finalizado

O script finalizado deve se parecer com o exemplo a seguir:

param (
    [string]$ResourceGroupName
)

$adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'

$vms = 'web','app','sql'

foreach ($vm in $vms) {

    Write-Output "Creating VM: $vm"

    $azVmParams = @{
        ResourceGroupName = $ResourceGroupName
        Name              = $vm
        Credential        = $adminCredential
        Image             = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts         = 22
    }
    New-AzVm @azVmParams
}

Depois de confirmar que seu script está como no exemplo acima, feche o editor utilizando o menu contextual de reticências (...) no canto superior direito do editor, ou o atalho de teclado Ctrl + Q.

Executar o script

  1. Execute o script com o seguinte comando:

    ./ConferenceDailyReset.ps1 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    
  2. Aguarde a conclusão. O script demora vários minutos para ser concluído.

  3. Verifique as VMs. Depois que terminar o script, confirme se tudo foi concluído com sucesso listando as VMs no grupo de recursos:

    Get-AzVM -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    

    Deverá haver três VMs, cada uma com um nome exclusivo.

Você conseguiu desenvolver um script que automatiza a criação de três VMs, cada uma em um grupo de recursos específico, garantindo que estejam prontas para as demonstrações diárias na feira. Embora o script seja simples e direto, ele agiliza bastante um processo que seria demorado e sujeito a erros se fosse feito manualmente pelo portal do Azure.