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

Atenção

Este artigo faz referência ao CentOS, uma distribuição Linux que está se aproximando do status de Fim da Vida Útil (EOL). Por favor, considere o seu uso e planeje de acordo. Para obter mais informações, consulte as diretrizes de Fim da Vida Útil do CentOS.

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

As máquinas virtuais do Azure proporcionam um ambiente informático totalmente configurável e flexível. Este tutorial abrange itens de implementação básicos de máquinas virtuais do Azure, como selecionar um tamanho de VM, selecionar uma imagem de VM e implementar uma VM. Sabe como:

  • Criar e ligar a uma VM
  • Selecionar e utilizar imagens de VM
  • Ver e utilizar tamanhos específicos de VM
  • Redimensionar uma VM
  • Visualizar e compreender o estado de uma VM

Este tutorial usa a CLI no Azure Cloud Shell, que é constantemente atualizado para a versão mais recente.

Se optar por instalar e utilizar a CLI localmente, este tutorial exigirá que execute a versão 2.0.30 ou posterior da CLI do Azure. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).

Criar grupo de recursos

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

Um grupo de recursos do Azure é um contentor lógico no qual os recursos do Azure são implementados e geridos. Um grupo de recursos tem de ser criado antes de uma máquina virtual. Neste exemplo, um grupo de recursos chamado myResourceGroupVM é criado na região eastus2 .

az group create --name myResourceGroupVM --location eastus2

O grupo de recursos é especificado ao criar ou modificar uma VM, o que pode ser visto ao longo deste tutorial.

Criar a máquina virtual

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

Quando cria uma máquina virtual, várias opções estão disponíveis, como a imagem do sistema operativo, as credenciais administrativas e o dimensionamento do disco. O exemplo a seguir cria uma VM chamada myVM que executa o SUSE Linux Enterprise Server (SLES). Uma conta de utilizador chamada azureuser é criada na VM, as chaves SSH são geradas caso não existam na localização predefinida da chave (~/.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 demorar alguns minutos. Quando a VM tiver sido criada, a CLI do Azure produz informações sobre a VM. Anote o publicIpAddress, esse 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"
}

Ligar à VM

Pode agora ligar à VM com o SSH no Azure Cloud Shell ou a partir do seu computador local. Substitua o endereço IP de exemplo pelo publicIpAddress que anotou no passo anterior.

ssh azureuser@52.174.34.95

Assim que tiver sessão iniciada na VM, pode instalar e configurar as aplicações. Quando tiver terminado, feche a sessão SSH como normalmente:

exit

Compreender as imagens de VM

O Azure Marketplace inclui muitas imagens que podem ser usadas para criar VMs. Nos passos anteriores, uma máquina virtual foi criada com uma imagem de Ubuntu. Neste passo, a CLI do Azure é utilizada para procurar no marketplace uma imagem do CentOS, que é utilizada para implementar uma segunda máquina virtual.

Para ver uma lista das imagens mais frequentemente utilizadas, utilize o comando az vm image list.

az vm image list --output table

A saída do comando devolve as imagens de 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 --all parâmetro. Também é possível filtrar a lista de imagens por --publisher ou –-offer. Neste exemplo, a lista é filtrada para todas as imagens, publicadas pela OpenLogic, com uma oferta que corresponde ao 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

Nota

A Canonical alterou os nomes das ofertas que usa para as versões mais recentes. Antes do Ubuntu 20.04, o nome da oferta é UbuntuServer. Para o Ubuntu 20.04 o nome da oferta é 0001-com-ubuntu-server-focal e para o Ubuntu 22.04 é 0001-com-ubuntu-server-jammy.

Para implementar uma VM com uma imagem específica, anote o valor na coluna Urn, que consiste no publicador, oferta, SKU e, opcionalmente, um número de versão para identificar a imagem. Ao especificar a imagem, o número da versão da imagem pode ser substituído por latest, que seleciona a versão mais recente da distribuição. Neste exemplo, o --image parâmetro é 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

Compreender os tamanhos de VM

Um tamanho de máquina virtual determina a quantidade de recursos de computação, como a CPU, memória e GPU que ficam disponíveis para a máquina virtual. As máquinas virtuais devem ser dimensionadas de forma adequada para a carga de trabalho esperada. Se a carga de trabalho aumentar, uma máquina virtual existente pode ser redimensionada.

Tamanhos de VMs

A tabela seguinte categoriza tamanhos em casos de utilização.

Tipo Description
Fins gerais CPU-para-memória equilibrada. Ideal para desenvolvimento/teste e aplicações e soluções de dados pequenas a médias.
Com otimização de computação CPU-para-memória elevada. É adequado para aplicações de tráfego médio, dispositivos de rede e processos em lote.
Com otimização de memória Memória-para-núcleo elevada. É ideal para bases de dados relacionais, caches médias a grandes e análise dentro da memória.
Com otimização de armazenamento Débito e E/S de disco elevados. Ideal para bases de dados de Macrodados, SQL e NoSQL.
GPU VMs especializadas destinadas a composição gráfica e edição de vídeo exigentes.
Elevado desempenho As nossas mais avançadas VMs com CPU, com interfaces de rede de alto débito (RDMA) opcionais.

Localizar todos os tamanhos de VM disponíveis

Para ver uma lista de tamanhos de VM disponíveis numa região específica, utilize o comando az vm list-sizes.

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 uma VM com tamanho específico

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

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

Redimensionar uma VM

Depois de implementar uma VM, esta pode ser redimensionada para aumentar ou diminuir a alocação de recursos. Pode ver o tamanho atual 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 pretendido está disponível no cluster do Azure atual. O comando az vm list-vm-resize-options comando devolve a lista de tamanhos.

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

Se o tamanho pretendido estiver disponível, a VM pode ser redimensionada de um estado ligado, no entanto, é reiniciada durante a operação. Utilize o comando az vm resize para efetuar o redimensionamento.

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

Se o tamanho pretendido não estiver no cluster atual, a VM tem de ser desalocada antes de a operação de redimensionamento poder ocorrer. Utilize o comando az vm deallocate para parar e desalocar a VM. Tenha em atenção que, quando a VM for novamente ligada, quaisquer dados no disco temporário poderão ser removidos. O endereço IP público também é alterado, a menos que esteja a ser utilizado um endereço IP estático.

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

Depois de desalocada, pode ocorrer o redimensionamento.

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

Depois do 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 de vários estados de energia. Este estado representa o estado atual da VM do ponto de vista do hipervisor.

Estados de energia

Estado de Energia Description
A iniciar Indica que a máquina virtual está a iniciar.
Em Execução Indica que a máquina virtual está em execução.
A parar Indica que a máquina virtual está a ser parada.
Parado Indica que a máquina virtual está parada. As máquinas virtuais no estado de paragem continuam a incorrer em custos de computação.
A desalocar Indica que a máquina virtual está a ser desalocada.
Desalocada Indica que a máquina virtual foi removida do hipervisor, mas continua disponível no painel de controlo. As máquinas virtuais no estado Desalocada não incorrem em custos de computação.
- Indica que o estado de energia da máquina virtual é desconhecido.

Localizar o estado de energia

Para obter o estado de uma VM específica, utilize o comando az vm get-instance-view. Certifique-se de que especifica um nome válido para a máquina virtual e o grupo de recursos.

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

Resultado:

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

Para recuperar o estado de energia de todas as VMs em sua assinatura, use a API Máquinas Virtuais - Listar Todas as APIs com status de parâmetro definido comotrue.

Tarefas de gestão

Durante o ciclo de vida de uma máquina virtual, poderá querer executar tarefas de gestão, como iniciar, parar ou eliminar uma máquina virtual. Além disso, pode querer criar scripts para automatizar tarefas repetitivas ou complexas. Ao utilizar a CLI do Azure, muitas tarefas comuns de gestão podem ser executadas na linha de comandos ou em scripts.

Obter endereço IP

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

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

Parar máquina virtual

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

Iniciar máquina virtual

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

Excluindo recursos de VM

Dependendo de como você exclui uma VM, ela só pode excluir o recurso de VM, não os recursos de rede e disco. Você pode alterar o comportamento padrão para excluir outros recursos ao excluir a VM. Para obter mais informações, consulte Excluir uma VM e 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 devolve o controlo à linha de comandos, sem aguardar a conclusão da operação. O parâmetro --yes confirma que pretende eliminar os recursos sem uma linha de comandos adicional para fazê-lo.

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

Próximos passos

Neste tutorial, aprendeu sobre a criação e gestão básica de VMs, como:

  • Criar e ligar a uma VM
  • Selecionar e utilizar imagens de VM
  • Ver e utilizar tamanhos específicos de VM
  • Redimensionar uma VM
  • Visualizar e compreender o estado de uma VM

Avance para o próximo tutorial para saber mais sobre os discos de VM.