Exercício - Criar um recurso do Azure interativamente com a CLI do Azure

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.

Observação

Este exercício é opcional. Se quiser concluir este exercício, terá de criar uma subscrição 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 deste 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 ao concluir o 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 Gerenciador de Recursos do Azure para gerenciar grupos de recursos para criar um grupo de recursos usando o portal do Azure, ou você pode seguir 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 Linux com a CLI do Azure

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

  1. Abra o Azure Cloud Shell através do portal Azure ou utilizando o botão Open Cloud Shell localizado no canto superior direito de muitos blocos de código Azure CLI.

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

    • Especifique o nome do seu 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 uma localização próxima de si na lista de localizações disponíveis no 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
    

    Gorjeta

    Você acabou de usar o botão Copiar e notou que todos os caracteres de continuação de linha foram removidos? Este comportamento é a predefinição. Como a CLI do Azure pode ser executada em muitos ambientes com caracteres de continuação de linha diferentes, o botão de cópia 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 seu script não foi copiado corretamente e o terminal Cloud Shell estiver à espera de input adicional, use CTRL + Z para voltar a um prompt e tente novamente.

  3. Aguarde a criação da VM 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 az vm list comandos e az vm show para obter informações específicas sobre a VM. Seguem-se alguns exemplos:

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

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

    az vm list --output table
    

    Obtenha informações sobre uma única 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 propriedade aninhados 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. Liga-te à VM.

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

    Saia digitando sair.

Saiba mais sobre as opções de VM

Quando trabalhas com os recursos do Azure na linha de comandos, não estás a usar o portal do Azure, que te oferece frequentemente uma lista de opções de propriedades. Por exemplo, uma lista de locais disponíveis e tamanhos de VM. A CLI do Azure tem vários comandos em muitos de seus grupos de comandos que fornecem essas informações. Aqui estão alguns exemplos de VMs:

Gorjeta

O formato CLI --output table do Azure não retorna 100% das informações disponíveis, mas geralmente facilita a leitura de grandes resultados de comando. Use o --query parâmetro 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 do que você selecionar, pode levar um ou dois minutos para que --location a CLI do Azure retorne 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 num grupo de recursos.

    Se você tiver optado 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 a ser cobrada.

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

    Digite Y e pressione Enter quando solicitado a continuar.

  2. Desalocar uma VM:

    Para evitar ser cobrado por uma VM parada, você pode desalocá-la. A desalocação de VMs 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 (Deslocalizado)'.

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

    Quando a VM parar, exclua-a executando o az vm delete comando.

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

    Digite Y e pressione Enter quando solicitado a continuar.

Enquanto você executava esses comandos interativamente, uma abordagem melhor é escrever um script da CLI do Azure. Os scripts permitem que você reutilize 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.