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.

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

Como você está utilizando a Área Restrita do Azure, não é necessário 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 VM do Azure com a CLI do Azure:

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

    • Use o comando az group list para obter o nome do grupo de recursos de área restrita.

    • 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 da área restrita do Azure:

      • westus2
      • southcentralus
      • centralus
      • eastus
      • westeurope
      • southeastasia
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • 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
    
    # Get the single resource group name created by the sandbox.
    rgName=$(az group list --query "[].{Name:name}" --output tsv)
    echo $rgName
    
    # Create additional variables with values of your choice.
    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 de área restrita estiver aguardando entrada adicional, use CTRL + Z para retornar a um prompt e tentar novamente.

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

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

  3. 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
    
  4. 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 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 para 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.