Tutorial: Criar e gerenciar VMs do Linux com a CLI do Azure

Cuidado

Este artigo faz referência ao CentOS, uma distribuição do Linux que está se aproximando do status de EOL (fim da vida útil). Considere seu uso e planeje adequadamente. Para obter mais informações, veja as Diretrizes sobre fim da vida útil do CentOS.

Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis

Máquinas virtuais do Azure fornecem um ambiente de computação totalmente configurável e flexível. Este tutorial aborda itens básicos de implantação de máquina virtual do Azure, como a seleção de um tamanho de VM, seleção de uma imagem de VM e implantação de uma VM. Você aprenderá como:

  • Criar e conectar-se a uma VM
  • Selecionar e usar imagens de VM
  • Exibir e usar tamanhos específicos de VM
  • Redimensionar uma VM
  • Exibir e compreender o estado da VM

Este tutorial usa a CLI dentro do Azure Cloud Shell, que é constantemente atualizada para a versão mais recente.

Se você optar por instalar e usar a CLI localmente, este tutorial exigirá que você execute a CLI do Azure versão 2.0.30 ou posterior. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Criar grupo de recursos

Crie um grupo de recursos com o comando az group create.

Um grupo de recursos do Azure é um contêiner lógico no qual os recursos do Azure são implantados e gerenciados. Você deve criar um grupo de recursos antes de criar uma máquina virtual. Neste exemplo, criaremos um grupo de recursos chamado myResourceGroupVM na região eastus2.

az group create --name myResourceGroupVM --location eastus2

O grupo de recursos é especificado ao criar ou modificar uma VM, que pode ser visto durante este tutorial.

Criar máquina virtual

Crie uma máquina virtual com o comando az vm create.

Há várias opções disponíveis ao criar uma máquina virtual, como a imagem do sistema operacional, as credenciais administrativas e o dimensionamento do disco. O exemplo a seguir cria uma VM nomeada myVM que executa o SUSE Linux Enterprise Server (SLES). Uma conta de usuário chamada azureuser é criada na VM, e as chaves SSH são geradas, se ainda não existirem no local de chave padrão ( ~/.ssh):

az vm create \
    --resource-group myResourceGroupVM \
    --name myVM \
    --image SuseSles15SP3 \
    --public-ip-sku Standard \
    --admin-username azureuser \
    --generate-ssh-keys

A criação da VM pode levar alguns minutos. Depois que a VM tiver sido criada, a CLI do Azure envia informações sobre a VM. Anote o publicIpAddress, este endereço pode ser usado para acessar a máquina virtual.

{
  "fqdns": "",
  "id": "/subscriptions/d5b9d4b7-6fc1-0000-0000-000000000000/resourceGroups/myResourceGroupVM/providers/Microsoft.Compute/virtualMachines/myVM",
  "location": "eastus2",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "52.174.34.95",
  "resourceGroup": "myResourceGroupVM"
}

Conectar-se a uma VM

Agora você pode se conectar à VM com o SSH no Azure Cloud Shell ou do computador local. Substitua o endereço IP de exemplo com o publicIpAddress observado na etapa anterior.

ssh azureuser@52.174.34.95

Depois de conectado à VM, você pode instalar e configurar aplicativos. Quando tiver terminado, você fechará a sessão SSH normalmente:

exit

Entender as imagens de VM

O Azure Marketplace inclui muitas imagens que podem ser usadas para criar VMs. Nas etapas anteriores, uma máquina virtual foi criada usando uma imagem do Ubuntu. Nesta etapa, a CLI do Azure é usada para pesquisar no marketplace para uma imagem CentOS, que é usado para implantar uma segunda máquina virtual.

Para ver uma lista dos mais usados imagens, use o comando lista de imagens de vm az.

az vm image list --output table

A saída do comando retorna as imagens da VM mais populares no Azure.

Architecture    Offer                         Publisher               Sku                                 Urn                                                                             UrnAlias                 Version
--------------  ----------------------------  ----------------------  ----------------------------------  ------------------------------------------------------------------------------  -----------------------  ---------
x64             CentOS                        OpenLogic               7.5                                 OpenLogic:CentOS:7.5:latest                                                     CentOS                   latest
x64             debian-10                     Debian                  10                                  Debian:debian-10:10:latest                                                      Debian                   latest
x64             flatcar-container-linux-free  kinvolk                 stable                              kinvolk:flatcar-container-linux-free:stable:latest                              Flatcar                  latest
x64             opensuse-leap-15-3            SUSE                    gen2                                SUSE:opensuse-leap-15-3:gen2:latest                                             openSUSE-Leap            latest
x64             RHEL                          RedHat                  7-LVM                               RedHat:RHEL:7-LVM:latest                                                        RHEL                     latest
x64             sles-15-sp3                   SUSE                    gen2                                SUSE:sles-15-sp3:gen2:latest                                                    SLES                     latest
x64             UbuntuServer                  Canonical               18.04-LTS                           Canonical:UbuntuServer:18.04-LTS:latest                                         UbuntuLTS                latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-Datacenter                     MicrosoftWindowsServer:WindowsServer:2022-Datacenter:latest                     Win2022Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2022-datacenter-azure-edition-core  MicrosoftWindowsServer:WindowsServer:2022-datacenter-azure-edition-core:latest  Win2022AzureEditionCore  latest
x64             WindowsServer                 MicrosoftWindowsServer  2019-Datacenter                     MicrosoftWindowsServer:WindowsServer:2019-Datacenter:latest                     Win2019Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2016-Datacenter                     MicrosoftWindowsServer:WindowsServer:2016-Datacenter:latest                     Win2016Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-R2-Datacenter                  MicrosoftWindowsServer:WindowsServer:2012-R2-Datacenter:latest                  Win2012R2Datacenter      latest
x64             WindowsServer                 MicrosoftWindowsServer  2012-Datacenter                     MicrosoftWindowsServer:WindowsServer:2012-Datacenter:latest                     Win2012Datacenter        latest
x64             WindowsServer                 MicrosoftWindowsServer  2008-R2-SP1                         MicrosoftWindowsServer:WindowsServer:2008-R2-SP1:latest                         Win2008R2SP1             latest

Uma lista completa pode ser vista, adicionando o parâmetro --all. A lista de imagens também pode ser filtrada por --publisher ou –-offer. Neste exemplo, a lista é filtrada para todas as imagens, publicada pela OpenLogic, com uma oferta que combina com o CentOS.

az vm image list --offer CentOS --publisher OpenLogic --all --output table

Exemplo de saída parcial:

Architecture    Offer                      Publisher    Sku              Urn                                                       Version
--------------  -------------------------  -----------  ---------------  --------------------------------------------------------  ---------------
x64             CentOS                     OpenLogic    8_2              OpenLogic:CentOS:8_2:8.2.2020111800                       8.2.2020111800
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020062401                  8.2.2020062401
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020100601                  8.2.2020100601
x64             CentOS                     OpenLogic    8_2-gen2         OpenLogic:CentOS:8_2-gen2:8.2.2020111801                  8.2.2020111801
x64             CentOS                     OpenLogic    8_3              OpenLogic:CentOS:8_3:8.3.2020120900                       8.3.2020120900
x64             CentOS                     OpenLogic    8_3              OpenLogic:CentOS:8_3:8.3.2021020400                       8.3.2021020400
x64             CentOS                     OpenLogic    8_3-gen2         OpenLogic:CentOS:8_3-gen2:8.3.2020120901                  8.3.2020120901
x64             CentOS                     OpenLogic    8_3-gen2         OpenLogic:CentOS:8_3-gen2:8.3.2021020401                  8.3.2021020401
x64             CentOS                     OpenLogic    8_4              OpenLogic:CentOS:8_4:8.4.2021071900                       8.4.2021071900
x64             CentOS                     OpenLogic    8_4-gen2         OpenLogic:CentOS:8_4-gen2:8.4.2021071901                  8.4.2021071901
x64             CentOS                     OpenLogic    8_5              OpenLogic:CentOS:8_5:8.5.2022012100                       8.5.2022012100
x64             CentOS                     OpenLogic    8_5              OpenLogic:CentOS:8_5:8.5.2022101800                       8.5.2022101800
x64             CentOS                     OpenLogic    8_5-gen2         OpenLogic:CentOS:8_5-gen2:8.5.2022012101                  8.5.2022012101

Observação

A Canonical alterou os nomes de Oferta usados para as versões mais recentes. Antes do Ubuntu 20.04, o nome da Oferta é UbuntuServer. O nome da Oferta é 0001-com-ubuntu-server-focal para o Ubuntu 20.04 e 0001-com-ubuntu-server-jammy para o Ubuntu 22.04.

Para implantar uma VM usando uma imagem específica, anote o valor da coluna Urn, o qual consiste no publicador, oferta, SKU e, opcionalmente, um número de versão para identificar a imagem. Ao especificar a imagem, o número de versão da imagem pode ser substituído por latest, que seleciona a versão mais recente da distribuição. Neste exemplo, o parâmetro --image é usado para especificar a versão mais recente de um CentOS 8.5.

az vm create --resource-group myResourceGroupVM --name myVM2 --image OpenLogic:CentOS:8_5:latest --generate-ssh-keys

Entender os tamanhos de VM

Um tamanho de máquina virtual determina a quantidade de recursos de computação, como memória, CPU e GPU que estão disponíveis para a máquina virtual. Máquinas virtuais precisam ser dimensionada adequadamente para a carga de trabalho esperada. Se a carga de trabalho aumentar, uma máquina virtual existente pode ser redimensionada.

Tamanhos de VM

A tabela a seguir categoriza tamanhos em casos de uso.

Type Descrição
Propósito geral CPU/memória equilibrados. Ideal para desenvolvimento/teste e para aplicativos de pequeno a médio porte e soluções de dados.
Computação otimizada Relação de CPU/memória alta. Boa para aplicativos de tráfego médio, dispositivos de rede e processos em lote.
Memória otimizada Relação de memória/núcleo alta. Ótima para banco de dados relacionais, caches médios a grandes e análises na memória.
Armazenamento otimizado Alta taxa de transferência de disco e de E/S. Ideal para Big Data, SQL e bancos de dados NoSQL.
GPU VMs especializadas, destinadas para renderização gráfica e edição de vídeo pesadas.
Alto desempenho Nossas VMs de CPU mais potentes com adaptadores de rede de alto rendimento (RDMA) opcionais.

Encontrar tamanhos de VM disponíveis

Para ver uma lista de tamanhos de VM disponíveis em uma região específica, use o comando lista-tamanhos de vm az.

az vm list-sizes --location eastus2 --output table

Exemplo de saída parcial:

  MaxDataDiskCount    MemoryInMb  Name                      NumberOfCores    OsDiskSizeInMb    ResourceDiskSizeInMb
------------------  ------------  ----------------------  ---------------  ----------------  ----------------------
4                   8192          Standard_D2ds_v4           2                1047552           76800
8                   16384         Standard_D4ds_v4           4                1047552           153600
16                  32768         Standard_D8ds_v4           8                1047552           307200
32                  65536         Standard_D16ds_v4          16               1047552           614400
32                  131072        Standard_D32ds_v4          32               1047552           1228800
32                  196608        Standard_D48ds_v4          48               1047552           1843200
32                  262144        Standard_D64ds_v4          64               1047552           2457600
4                   8192          Standard_D2ds_v5           2                1047552           76800
8                   16384         Standard_D4ds_v5           4                1047552           153600
16                  32768         Standard_D8ds_v5           8                1047552           307200
32                  65536         Standard_D16ds_v5          16               1047552           614400
32                  131072        Standard_D32ds_v5          32               1047552           1228800
32                  196608        Standard_D48ds_v5          48               1047552           1843200
32                  262144        Standard_D64ds_v5          64               1047552           2457600
32                  393216        Standard_D96ds_v5          96               1047552           3686400

Criar VM com um tamanho específico

No exemplo de criação de VM anterior, um tamanho não foi fornecido, que resulta em um tamanho padrão. Um tamanho de VM pode ser selecionado no momento da criação usando az vm create e o parâmetro --size.

az vm create \
    --resource-group myResourceGroupVM \
    --name myVM3 \
    --image SuseSles15SP3 \
    --size Standard_D2ds_v4  \
    --generate-ssh-keys

Redimensionar uma VM

Após a implantação de uma VM, ela pode ser redimensionada para aumentar ou diminuir a alocação de recursos. Você pode exibir atual do tamanho de uma VM com az vm show:

az vm show --resource-group myResourceGroupVM --name myVM --query hardwareProfile.vmSize

Antes de redimensionar uma VM, verifique se o tamanho desejado está disponível no cluster da VM atual. O comando az vm lista-vm--opções de redimensionamento retorna a lista de tamanhos.

az vm list-vm-resize-options --resource-group myResourceGroupVM --name myVM --query [].name

Se o tamanho desejado estiver disponível, a VM poderá ser redimensionada a partir de um estado ligado. No entanto, ela é reinicializada durante a operação. Use o az vm redimensionar comando para executar o redimensionamento.

az vm resize --resource-group myResourceGroupVM --name myVM --size Standard_D4s_v3

Se o tamanho desejado não estiver no cluster atual, a VM precisará ser desalocada antes que a operação de redimensionamento ocorra. Utilize o comando az vm deallocate para parar e desalocar a máquina virtual. Observe que quando a VM é ligada novamente, todos os dados no disco temporário podem ser removidos. O endereço IP público também altera a menos que um endereço IP estático está sendo usado.

az vm deallocate --resource-group myResourceGroupVM --name myVM

Quando desalocados, o redimensionamento pode ocorrer.

az vm resize --resource-group myResourceGroupVM --name myVM --size Standard_GS1

Após o redimensionamento, a VM pode ser iniciada.

az vm start --resource-group myResourceGroupVM --name myVM

Estados de energia da VM

Uma VM do Azure pode ter um dentre vários estados de energia. Esse estado representa o estado atual da VM do ponto de vista do hipervisor.

Estados de energia

Estado de energia Descrição
Iniciando Indica que a máquina virtual está sendo iniciada.
Executando Indica que a máquina virtual está em execução.
Parando Indica que a máquina virtual está sendo interrompida.
Parado Indica que a máquina virtual foi parada. Máquinas virtuais no estado interrompido ainda incorrerá em encargos de computação.
Desalocando Indica que a máquina virtual está sendo desalocada.
Desalocada Indica que a máquina virtual é removido do hipervisor, mas ainda estão disponíveis no plano de controle. Máquinas virtuais no estado Desalocado não incorrem em encargos de computação.
- Indica que o estado de energia da máquina virtual é desconhecido.

Localizar o estado de energia

Para recuperar o estado de uma VM específica, use o comando az vm get-instance-view. Especifique um nome válido para uma máquina virtual e grupo de recursos.

az vm get-instance-view \
    --name myVM \
    --resource-group myResourceGroupVM \
    --query instanceView.statuses[1] --output table

Saída:

Code                Level    DisplayStatus
------------------  -------  ---------------
PowerState/running  Info     VM running

Para recuperar o estado de energia de todas as VMs na sua assinatura, use a API Máquinas Virtuais – Listar Todas com o parâmetro statusOnly definido como true.

Tarefas de gerenciamento

Durante o ciclo de vida de uma máquina virtual, você talvez queira executar tarefas de gerenciamento, como iniciar, interromper ou excluir uma máquina virtual. Além disso, é possível que você queira criar scripts para automatizar tarefas repetitivas ou complexas. Usando a CLI do Azure, muitas tarefas comuns de gerenciamento podem ser executadas em linha de comando ou em scripts.

Obter o endereço IP

Esse comando retorna os endereços IP públicos e privados de uma máquina virtual.

az vm list-ip-addresses --resource-group myResourceGroupVM --name myVM --output table

Como interromper uma máquina virtual

az vm stop --resource-group myResourceGroupVM --name myVM

Como iniciar uma máquina virtual

az vm start --resource-group myResourceGroupVM --name myVM

Excluindo recursos de VM

Dependendo de como você exclui uma VM, pode ser que apenas o recurso de VM seja excluído, não os recursos de rede e de disco. Você pode alterar o comportamento padrão para excluir outros recursos ao excluir a VM. Para obter mais informações, confira Excluir uma VM e os recursos anexados.

A exclusão de um grupo de recursos também exclui todos os recursos do grupo de recursos, como a VM, a rede virtual e o disco. O parâmetro --no-wait retorna o controle ao prompt sem aguardar a conclusão da operação. O parâmetro --yes confirma que você deseja excluir os recursos sem um prompt adicional para fazer isso.

az group delete --name myResourceGroupVM --no-wait --yes

Próximas etapas

Neste tutorial, você aprendeu sobre a criação e o gerenciamento básico de VM e como:

  • Criar e conectar-se a uma VM
  • Selecionar e usar imagens de VM
  • Exibir e usar tamanhos específicos de VM
  • Redimensionar uma VM
  • Exibir e compreender o estado da VM

Avança para o próximo tutorial para saber mais sobre os discos de VM.