Exercício – Crie um Recurso do Azure de forma interativa com a CLI do Azure

Concluído

No cenário original, você deverá criar VMs (máquinas virtuais) para testar seu software de CRM (gerenciamento de relacionamento com o cliente). Quando uma nova compilação estiver disponível, você deseja criar uma nova VM para testar toda a experiência de instalação de uma imagem limpa. Após concluir o teste, você poderá excluir a VM.

Vamos experimentar os comandos para criar uma VM.

Observação

Este exercício é opcional. Se você quiser concluir este exercício, precisará criar uma assinatura do Azure antes de começar. Se você não tiver uma conta do Azure ou não quiser criar uma no momento, leia as instruções para entender as informações que estão sendo apresentadas.

Observação

Você precisa usar um grupo de recursos para concluir as etapas neste exercício. Você pode usar um grupo de recursos que já criou ou pode criar um novo grupo de recursos especificamente para este exercício. Se você optar por criar um novo grupo de recursos, isso facilitará a limpeza de todos os recursos criados durante a conclusão do exercício. Se você não tiver um grupo de recursos existente ou quiser criar um novo especificamente para este exercício, siga as etapas em Usar o portal do Azure e o Azure Resource Manager para gerenciar grupos de recursos para criar um grupo de recursos usando o portal do Azure ou siga as etapas em Gerenciar grupos de recursos do Azure usando a CLI do Azure para criar um grupo de recursos usando a CLI do Azure.

Exercício – Criar uma VM do Linux com a CLI do Azure

Veja como criar uma VM do Azure com a CLI do Azure:

  1. Abra o Azure Cloud Shell por meio do portal do Azure ou usando o botão Abrir Cloud Shell localizado no canto superior direito de muitos blocos de código da CLI do Azure.

  2. Use o comando az vm create para criar a VM.

    • Especifique o nome do grupo de recursos. Substitua myResourceGroupName no exemplo a seguir pelo nome de um grupo de recursos existente ou pelo nome do grupo de recursos que você criou para este exercício.
    • Atribua um nome à VM seguindo os padrões de nomenclatura da sua organização.
    • Escolha um local próximo a você na lista de locais disponíveis do Azure.
    • Use a imagem do Linux: Ubuntu2204.
    • Atribua um nome de usuário de administrador seguindo os padrões de nomenclatura da sua organização.
    #!/bin/bash
    
    # Create variables with values of your choice.
    rgName="myResourceGroupName"
    vmName="msdocs-vm-01"
    vmLocation="westus"
    vmImage="Ubuntu2204"
    vmAdminUserName="myAzureUserName"
    
    # Create the VM
    az vm create \
      --resource-group $rgName \
      --name $vmName \
      --location $vmLocation \
      --image $vmImage \
      --public-ip-sku Standard \
      --admin-username $vmAdminUserName \
      --generate-ssh-keys
    

    Dica

    Você acabou de usar o botão Copiar e notou que todos os caracteres de continuação de linha foram removidos? Este comportamento ocorre por design. Como a CLI do Azure pode ser executada em muitos ambientes com caracteres de continuação de linha diferentes, o botão copiar os remove. Se preferir copiar um script formatado, use o mouse para selecionar e copiar o conteúdo do bloco de código.

    Para colar no Azure Cloud Shell, 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).

    Se o script não tiver sido copiado corretamente e o terminal do Cloud Shell estiver aguardando a entrada de adição, use CTRL + Z para retornar a um prompt e tentar novamente.

  3. Aguarde a criação da VM do Linux:

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

  4. Obter informações sobre a VM

    Quando concluída, a CLI do Azure retorna informações sobre a VM no formato JSON. Use os comandos az vm list e az vm show para obter informações específicas sobre a VM. Estes são alguns exemplos:

    Vários desses scripts usam nomes de variáveis e valores armazenados em etapas anteriores.

    Obtenha uma lista de todas as VMs no formato de tabela.

    az vm list --output table
    

    Obtenha informações sobre uma VM no formato JSON.

    Parte dessa saída é exibida depois que uma nova VM é criada. No entanto, é útil retornar mais informações ao descobrir nomes de propriedades aninhadas para referência em um script. Os nomes de propriedade diferenciam maiúsculas de minúsculas.

    az vm show --resource-group $rgName --name $vmName
    

    Obtenha informações sobre as propriedades da VM.

    # Get the time the VM was created
    az vm show --resource-group $rgName --name $vmName --query "timeCreated"
    
    # Get the OS disk storage account type
    az vm show --resource-group $rgName --name $vmName --query "storageProfile.osDisk.managedDisk.storageAccountType"
    

    Armazene uma propriedade de uma VM em uma variável.

    A CLI do Azure tem vários tipos de saída disponíveis. JSON é o padrão, mas ao armazenar valores em variáveis, remova a formatação extra com --output tsv.

    #!/bin/bash
    # Store the VM id
    vmID=$(az vm show --resource-group $rgName --name $vmName --query id --output tsv)
    echo $vmID
    
    # Store the public IP address
    publicIP=$(az vm list-ip-addresses \
        --resource-group $rgName \
        --name $vmName \
        --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" --output tsv)
    echo $publicIP
    
  5. Conectar-se à VM.

    #!/bin/bash
    az ssh vm --private-key-file \path\to\private\key \
        --resource-group $rgName \
        --name $vmName \
        --local-user $vmAdminUserName
    

    Saia digitando saída.

Saiba mais sobre as opções de VM

Ao trabalhar com recursos do Azure na linha de comando, você não está usando o portal do Azure, que geralmente oferece uma lista de seleção de opções de propriedade. Por exemplo, uma lista de locais e tamanhos de VM disponíveis. Nos grupos de comandos da CLI do Azure, há vários comandos que fornecem essas informações. Veja alguns exemplos para VMs:

Dica

O formato --output table da CLI do Azure não retorna 100% das informações disponíveis, mas geralmente facilita a leitura de grandes resultados de comando. Use o parâmetro --query para especificar as informações nas quais você está mais interessado.

  1. Obtenha tamanhos de VM disponíveis para um local:

    az vm list-sizes --location westus --output table
    
  2. Obtenha SKUs disponíveis para um local:

    Dependendo de qual --location você selecionar, pode levar um minuto ou dois para a CLI do Azure retornar uma lista completa de SKUs.

    # virtual machines
    az vm list-skus --location westus --resource-type virtualMachines --output table
    
    # disks
    az vm list-skus --location westus --resource-type disks --output table
    
  3. Obtenha opções de redimensionamento disponíveis para uma VM existente:

    az vm list-vm-resize-options --resource-group $rgName --name $vmName --output table
    
  4. Mostrar detalhes de todas as VMs em um grupo de recursos.

    Se você optou por trabalhar em seu ambiente local e tiver várias VMs em sua assinatura, consulte VMs que atendam a um critério de filtro.

    #!/bin/bash
    # details of all VMs in a specified resource group
    az vm show --show-details --ids $(az vm list --resource-group $rgName --query "[].id" -o tsv)
    
    # list of all VMs created in the last 7 days
    createDate=$(date +%F -d "-7days")
    az vm list --resource-group $rgName \
            --query "[?timeCreated >='$createDate'].{Name:name, admin:osProfile.adminUsername, DiskSize:storageProfile.osDisk.diskSizeGb}" \
            --output table
    
    # list all VMs whose disks are of a certain type
    # first get a list of the disk types or organization is using
    az vm list --resource-group $rgName --query "[].{Name:name, osDiskSize:storageProfile.osDisk.diskSizeGb, managedDiskTypes:storageProfile.osDisk.managedDisk.storageAccountType}" --output table
    
    diskType="Premium_LRS"
    az vm list --resource-group $rgName \
            --query "[?storageProfile.osDisk.managedDisk.storageAccountType =='$diskType'].{Name:name, admin:osProfile.adminUsername, osDiskSize:storageProfile.osDisk.diskSizeGb, CreatedOn:timeCreated, vmID:id}" \
            --output table
    

Parar ou excluir uma VM

  1. Desligue a VM:

    Você pode desligar (parar) uma VM em execução, embora a VM continue sendo cobrada.

    az vm stop --resource-group $rgName --name $vmName
    

    Insira Y e pressione Enter quando solicitado a continuar.

  2. Desalocar uma VM:

    Para evitar ser cobrado por uma VM parada, você pode desalocá-la. As VMs desalocadas contêm recursos que não são mais alocados (os encargos não se aplicam mais). O status da VM muda de 'Parado' para 'Parado (Desalocado)'.

    az vm deallocate --resource-group $rgName --name $vmName
    
  3. Excluir uma VM:

    Após interromper a VM, exclua-a executando o comando az vm delete.

    az vm delete --resource-group $rgName --name $vmName
    

    Insira Y e pressione Enter quando solicitado a continuar.

Embora você tenha executado esses comandos interativamente, uma abordagem melhor é gravar um script da CLI do Azure. Os scripts permitem reutilizar a lógica para criar ou excluir uma VM no futuro.

Na próxima unidade, vamos automatizar essas tarefas usando um script da CLI do Azure.