Exercício – Criar um Recurso do Azure usando scripts do Azure PowerShell

Concluído

Lembre-se de nosso cenário original: a criação de VMs para testar nosso software de CRM. Quando houver um novo build disponível, criaremos uma VM para testar a experiência de instalação completa de uma imagem limpa. Quando terminarmos, queremos excluir a VM.

Vamos experimentar os comandos para criar uma VM.

Criar uma VM do Linux com o Azure PowerShell

Como estamos utilizando a Área Restrita do Azure, não é necessário criar um grupo de recursos. Em vez disso, utilize o grupo de recursos [nome do grupo de recursos da Área Restrita]. Além disso, lembre-se das restrições de localização.

Vamos criar uma nova VM do Azure com o PowerShell.

  1. Use o cmdlet New-AzVm para criar uma VM.

    • Usar o grupo de recursos [nome do grupo de recursos da Área Restrita] .

    • Dê um nome à VM. No geral, é interessante usar algo significativo que identifique a finalidade da VM, a localização e o número da instância (se houver mais de uma). Utilizamos "testvm-eus-01" para a "VM de teste no leste dos EUA, instância 1". Crie seu próprio nome com base no local em que você coloca a VM.

    • Selecione uma localização perto de você na lista a seguir disponível na área restrita do Azure. Altere o valor no comando de exemplo a seguir se estiver usando a opção copiar e colar.

      • westus2
      • southcentralus
      • centralus
      • eastus
      • westeurope
      • southeastasia
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Use "Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest" para a imagem. Esta imagem é Ubuntu Linux.

    • Use o cmdlet Get-Credential e insira os resultados no parâmetro Credential.

      Importante

      Confira as Perguntas frequentes sobre a VM do Linux para conhecer as restrições de nome de usuário e senha. As senhas precisam ter de 12 a 123 caracteres e atender a três dos quatro requisitos de complexidade abaixo:

      • Ter caracteres minúsculos
      • Ter caracteres maiúsculos
      • Ter um dígito
      • Ter um caractere especial (Correspondência de regex [\W_])
    • Adicione o parâmetro -OpenPorts e passe "22" como a porta. Essa porta nos permite acessar o computador por SSH.

    • Crie um nome de endereço IP público. Utilize esse nome para criar e encontrar seu endereço IP estático para entrar no computador.

    New-AzVm -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "testvm-eus-01" -Credential (Get-Credential) -Location "eastus" -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest -OpenPorts 22 -PublicIpAddressName "testvm-eus-01"
    

    Dica

    Use o botão Copiar para copiar os comandos para a área de transferência. Para colar o conteúdo, clique com o botão direito do mouse em uma nova linha no terminal do Cloud Shell e selecione Colar ou use o atalho de teclado Shift + Insert (⌘ + V no macOS).

  2. Crie um nome de usuário e uma senha e pressione Enter. O PowerShell começa a criar sua VM.

  3. A criação da VM leva alguns minutos para ser concluída. Quando terminar, você poderá consultá-lo e atribuir o objeto da VM a uma variável ($vm).

    $vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
    
  4. Consulte o valor para despejar as informações sobre a VM.

    $vm
    

    Você deve ver algo semelhante à seguinte saída:

    ResourceGroupName : <rgn>[sandbox resource group name]</rgn>
    Id                : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/testvm-eus-01
    VmId              : 00000000-0000-0000-0000-000000000000
    Name              : testvm-eus-01
    Type              : Microsoft.Compute/virtualMachines
    Location          : eastus
    Tags              : {}
    HardwareProfile   : {VmSize}
    NetworkProfile    : {NetworkInterfaces}
    OSProfile         : {ComputerName, AdminUsername, LinuxConfiguration, Secrets}
    ProvisioningState : Succeeded
    StorageProfile    : {ImageReference, OsDisk, DataDisks}
    
  5. Você pode acessar objetos complexos por meio de uma notação de ponto (.). Por exemplo, para ver as propriedades no objeto VMSize associado à seção HardwareProfile, execute o seguinte comando:

    $vm.HardwareProfile
    
  6. Ou, para obter informações sobre um dos discos, execute o seguinte comando:

    $vm.StorageProfile.OsDisk
    
  7. Você também pode passar o objeto de VM para outros cmdlets. Por exemplo, a execução do comando a seguir mostra todos os tamanhos disponíveis para sua VM:

    $vm | Get-AzVMSize
    
  8. Agora, execute o seguinte comando para obter o endereço IP público:

    az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
    
  9. Com o endereço IP, você pode se conectar à VM com SSH. Por exemplo, se você utilizou o nome de usuário bob e o endereço IP é 205.22.16.5, a execução desse comando conectará o computador Linux:

    ssh bob@205.22.16.5
    

    Para sair, digite exit.

Excluir uma VM

Para testar mais alguns comandos, excluiremos a VM. Primeiro, precisamos desligar o sistema (insira Y se for solicitado a continuar):

Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Quando a VM tiver parada, exclua a VM executando o cmdlet Remove-AzVM (insira Y se for solicitado a continuar):

Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName

Execute este comando para listar todos os recursos em seu grupo de recursos:

Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table

Você deverá ver vários recursos (discos, redes virtuais, etc.) que ainda existem.

Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks

O comando Remove-AzVMapenas exclui a VM. Ele não limpa nenhum outro recurso. Neste ponto, bastaria apenas excluir o grupo de recursos e pronto. No entanto, vamos executar as etapas de limpeza manual como um exercício. Você deverá observar um padrão nos comandos.

  1. Exclua o adaptador de rede:

    $vm | Remove-AzNetworkInterface –Force
    
  2. Exclua os discos do sistema operacional gerenciado:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
    
  3. Em seguida, exclua a rede virtual:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
    
  4. Exclua o grupo de segurança de rede:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
    
  5. Exclua o endereço IP público:

    Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress -Force
    

Devemos ter capturado todos os recursos criados. Verifique o grupo de recursos apenas para ter certeza. Realizamos muitos comandos manuais aqui, mas uma abordagem melhor seria escrever um script. Em seguida, podemos reutilizar essa lógica posteriormente para criar ou excluir uma VM. Vamos analisar o script com o PowerShell.