Exercício - Criar um recurso do Azure interativamente com o Azure PowerShell

Concluído

No cenário original, você deve criar máquinas virtuais (VMs) para testar seu software CRM (Customer Relationship Management). Quando uma nova compilação estiver disponível, você deseja criar uma nova VM para testar toda a experiência de instalação a partir de uma imagem limpa. Quando o teste estiver concluído, você poderá excluir a VM.

Vamos tentar os comandos para criar uma VM.

Criar uma VM do Linux com o Azure PowerShell

Como você está usando a área restrita do Azure, não precisa criar um grupo de recursos. Em vez disso, use o grupo de recursos de área restrita existente [nome do grupo de recursos de área restrita]. Esteja ciente das restrições de localização.

Veja como criar uma nova VM do Azure com o Azure PowerShell:

  1. Use o New-AzVM cmdlet para criar a VM.

    • Especifique o grupo de recursos da área restrita: [nome do grupo de recursos da área restrita].

    • Nomeie a VM, seguindo os padrões de nomenclatura da sua organização.

    • Escolha um local perto de você na lista de locais de área restrita do Azure disponíveis.

      • westus2
      • E.U.A Centro-Sul
      • centralus
      • eastus
      • westeurope
      • Sudeste Asiático
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Use a imagem do Ubuntu Linux: Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest.

    • Use o Get-Credential cmdlet para definir as credenciais de administrador da VM.

    • Adicione o parâmetro OpenPorts com porta 22 para acesso SSH.

    • Crie um nome de endereço IP público para entrada SSH.

    $azVmParams = @{
        ResourceGroupName   = '<rgn>[sandbox resource group name]</rgn>'
        Name                = 'testvm-eus-01'
        Credential          = (Get-Credential)
        Location            = 'eastus'
        Image               = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts           = 22
        PublicIpAddressName = 'testvm-eus-01'
    }
    New-AzVm @azVmParams
    

    Gorjeta

    Pode utilizar o botão Copiar para copiar comandos para a área de transferência. Para colar, 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. Insira as credenciais:

    Quando solicitado, digite um nome de usuário e senha, seguindo as diretrizes: as senhas devem ter de 12 a 123 caracteres e atender a três dos quatro requisitos de complexidade a seguir: caracteres minúsculos, caracteres maiúsculos, dígitos e caracteres especiais (correspondência Regex [\W_]). Para obter mais informações, consulte Linux VM FAQ.

  3. Aguarde a criação da VM:

    O processo de criação da VM leva alguns minutos para ser concluído.

  4. Consulte a VM:

    Quando terminar, consulte a VM e atribua o objeto VM a uma variável ($vm).

    $vm = Get-AzVM -Name testvm-eus-01 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    
  5. Exibir informações sobre a VM:

    Para exibir informações sobre a VM, exiba o conteúdo da variável.

    $vm
    

    Saída de exemplo:

    ResourceGroupName : <rgn>[sandbox resource group name]</rgn>
    Id                : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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}
    ...
    
  6. Inspecione as propriedades da VM:

    Você pode inspecionar objetos complexos por meio do operador de acesso de membro (.). Por exemplo, para ver as propriedades no objeto associado à VMSize seção HardwareProfile, execute o seguinte comando:

    $vm.HardwareProfile
    

    Ou, para obter informações em um dos discos, execute o seguinte comando:

    $vm.StorageProfile.OsDisk
    
  7. Obtenha tamanhos de VM disponíveis:

    Passe o objeto VM para outros cmdlets para obter tamanhos disponíveis:

    $vm | Get-AzVMSize
    
  8. Obtenha o endereço IP público:

    Recupere o endereço IP público para se conectar à VM e armazená-lo em uma variável.

    $ip = Get-AzPublicIpAddress -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name testvm-eus-01
    
  9. Conecte-se à VM:

    Conecte-se à VM com SSH usando o endereço IP da variável. Por exemplo, se o nome de usuário for bob, use o seguinte comando:

    ssh bob@$($ip.IpAddress)
    

    Saia digitando sair.

Eliminar uma VM

Para tentar mais comandos, vamos excluir a VM. Siga estes passos:

  1. Desligue a VM:

    Execute o seguinte comando:

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

    Digite Y e pressione Enter quando solicitado a continuar.

  2. Elimine a VM:

    Quando a VM parar, exclua-a executando o Remove-AzVM cmdlet.

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

    Digite Y e pressione Enter quando solicitado a continuar.

  3. Liste todos os recursos no grupo de recursos:

    Use o Get-AzResource cmdlet para listar todos os recursos no grupo de recursos. Os resultados são canalizados para Select-Object retornar propriedades específicas:

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

    Você deve ver vários recursos, incluindo discos, redes virtuais, etc., que ainda existem:

    Name                    ResourceType                            ResourceGroupName
    ----                    ------------                            -----------------
    cloudshell              Microsoft.Storage/storageAccounts       <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/virtualNetworks       <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/publicIPAddresses     <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/networkSecurityGroups <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/networkInterfaces     <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01_OsDisk_1  Microsoft.Compute/disks                 <rgn>[sandbox resource group name]</rgn>
    

    O Remove-AzVM comando exclui apenas a VM. Não limpa nenhum dos outros recursos. Para limpá-los manualmente, siga estas etapas:

  4. Exclua a interface de rede:

    Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name |
        Remove-AzNetworkInterface
    

    Digite Y e pressione Enter quando solicitado a continuar.

  5. Exclua o grupo de segurança de rede:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzNetworkSecurityGroup
    

    Digite Y e pressione Enter quando solicitado a continuar.

  6. Exclua o endereço IP público:

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

    Digite Y e pressione Enter quando solicitado a continuar.

  7. Exclua a rede virtual:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzVirtualNetwork
    

    Digite Y e pressione Enter quando solicitado a continuar.

  8. Exclua os discos do sistema operacional gerenciado:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name |
        Remove-AzDisk
    

    Digite Y e pressione Enter quando solicitado a continuar.

  9. Verifique se todos os recursos foram removidos:

    Verifique o grupo de recursos para garantir que todos os recursos sejam removidos:

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

Enquanto você executava esses comandos interativamente, uma abordagem melhor é escrever um script do PowerShell. Os scripts permitem que você reutilize a lógica para criar ou excluir uma VM no futuro

Em seguida, vamos ver como automatizar essas tarefas usando um script do PowerShell.