Exercício – Adicionar um disco de dados a uma VM

Seu escritório de advocacia está expandindo sua quantidade de casos e você ficou responsável por criar um servidor Web do Linux para armazenar documentos críticos de uma variedade de fontes – clientes, outros escritórios de advocacia e escritórios de representantes legais. O servidor Web permite que os usuários façam upload de documentos e os armazene em disco.

Dica

Este exercício usa o Linux como o exemplo, mas o processo básico de criação de VMs e adição de discos é o mesmo para Windows. A principal diferença seria no particionamento e na formatação de disco. No Windows, você pode se conectam à sua VM pela Área de Trabalho Remota e usar as ferramentas internas de Gerenciamento de Disco ou implantar um script do PowerShell semelhante ao script de Bash que usará aqui.

Sua meta aqui é criar uma VM do Linux e anexar um novo VHD (disco rígido virtual) chamado uploadDataDisk1 para armazenar o diretório /uploads.

Definir valores padrão para o CLI do Azure

O CLI do Azure permite que você defina valores padrão para que não precise repeti-los sempre que executar um comando.

Aqui, você especificará o local padrão do Azure, ou a região. Esse é o local em que sua VM do Azure será colocada.

O ideal é que ela seja próxima de seus clientes. Nesse caso, selecione a região mais próxima de você entre as localizações disponíveis para a área restrita do Azure.

A área restrita gratuita permite que você crie recursos em um subconjunto das regiões globais do Azure. Selecione uma região desta lista quando você criar recursos:

  • westus2
  • southcentralus
  • centralus
  • eastus
  • westeurope
  • southeastasia
  • japaneast
  • brazilsouth
  • australiasoutheast
  • centralindia
  1. Execute az configure para definir a localização padrão que deseja usar. Substitua eastus pela localização escolhida na etapa anterior.

    az configure --defaults location=eastus
    

    Dica

    Use o botão Copiar para copiar comandos para a área de transferência. Para colar, clique com o botão direito do mouse em uma nova linha na janela do Cloud Shell e selecione Colar ou use o atalho de teclado Shift+Insert (⌘+V no macOS).

  2. Defina o nome do grupo de recursos padrão para o grupo de recursos pré-configurado criado para você através da área restrita do Azure: [grupo de recursos de área restrita]

    az configure --defaults group="<rgn>[sandbox Resource Group]</rgn>"
    

Criar uma VM do Linux

Aqui você cria uma VM do Linux para hospedar seu servidor Web.

  1. Execute este comando az vm create para criar sua VM do Ubuntu Linux.

    az vm create \
      --name support-web-vm01 \
      --image UbuntuLTS \
      --size Standard_DS1_v2 \
      --admin-username azureuser \
      --generate-ssh-keys
    
    • O nome da VM é support-web-vm01.
    • O tamanho dela é Standard_DS1_v2.
    • O nome de usuário administrador é azureuser. Na prática, esse nome pode ser o que quiser.
    • O argumento --generate-ssh-keys gera um par de chaves SSH para você, permitindo que se conecte à sua VM via SSH.

    A VM demora alguns minutos para aparecer. Quando a VM estiver pronta, você verá informações sobre ela no formato JSON. Aqui está um exemplo.

    {
      "fqdns": "",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/680469d8-edB7-42ec-b118-cd80d51741e7/providers/Microsoft.Compute/virtualMachines/support-web-vm01",
      "location": "eastus",
      "macAddress": "00-0D-3A-10-63-0A",
      "powerState": "VM running",
      "privateIpAddress": "10.0.0.4",
      "publicIpAddress": "104.211.38.211",
      "resourceGroup": "680469d8-edB7-42ec-b118-cd80d51741e7",
      "zones": ""
    }
    

    Observação

    Nesta lição, você está usando essa VM para saber como gerenciar discos. Na prática, você pode também instalar o servidor Web e outros softwares e, em seguida, executar az vm open-port para disponibilizar as portas que precisa para o mundo exterior.

Adicione um disco de dados vazio à sua VM

Aqui você criará um disco de dados vazio e o anexará à sua VM. Seu disco de dados terá, inicialmente, 64 GB. Posteriormente, você montará esse disco no diretório /uploads na sua VM.

Dica

Para fins de aprendizado, você está criando a VM e o disco de dados em etapas distintas. Na prática, você poderá especificar o argumento --data-disk-sizes-gb para o comando az vm create e adicionar discos de dados quando a VM for criada.

  1. Execute o seguinte comando az vm disk attach para adicionar um novo disco vazio à VM.

    az vm disk attach \
      --vm-name support-web-vm01 \
      --name uploadDataDisk1 \
      --size-gb 64 \
      --sku Premium_LRS \
      --new
    

    Esse comando:

    • Nomeia o disco uploadDataDisk1.
    • Defina seu tamanho para 64 GB.
    • Especifica o uso do armazenamento premium com redundância local.

Para usar o disco, você precisará particioná-lo e formatá-lo. Você fará isso em seguida.

Inicializar e formatar o disco de dados

Sua unidade de dados vazia precisa ser inicializada e formatada. Para fazer isso, é o mesmo processo do disco físico.

Para tarefas de uso único, você poderá se conectar à sua VM via SSH manualmente e executar os comandos que precisa. Para tornar o processo mais repetível e menos propenso a erro, você poderá usar um script Bash (ou um script do PowerShell, quando disponível) que especifica os comandos necessários.

Usar um script para automatizar o processo tem mais um benefício – seu script serve como documentação de como o processo é executado. Outras pessoas podem ler seu script para entender como o sistema está configurado. Se precisar alterar o processo, você poderá simplesmente modificar o script e testá-lo em uma VM zerada temporária, antes de implantar a alteração para a produção.

Para automatizar o processo nesta lição, você usará a Extensão de Script Personalizado. A Extensão de Script Personalizado é uma maneira fácil de baixar e executar scripts em suas VMs do Azure. Ela é apenas uma das muitas maneiras de configurar o sistema depois que a VM está em funcionamento.

Você pode armazenar seus scripts no armazenamento do Azure ou em uma localização pública, como o GitHub. Você pode executar scripts manualmente ou como parte de uma implantação mais automatizada. Aqui, você executará um comando da CLI do Azure para baixar um script do Bash previamente criado do GitHub e executá-lo em sua VM.

Para fins de aprendizado, aqui você também executará alguns comandos em sua VM para verificar se a VM está configurada conforme o esperado.

  1. Execute az vm show para obter o endereço IP público da VM e salve o endereço IP como uma variável de Bash.

    ipaddress=$(az vm show \
      --name support-web-vm01 \
      --show-details \
      --query [publicIps] \
      --o tsv)
    
  2. Execute o seguinte comando ssh para executar o comando lsblk em sua VM em uma conexão SSH usando os dados variáveis ipaddress que você acabou de criar. Lembre-se de que azureuser era o nome de usuário do administrador que usamos ao criar a VM. Se você tiver escolhido um nome diferente, use-o. Clique em “sim” quando solicitado.

    ssh azureuser@$ipaddress lsblk
    

    A saída desse comando deve ser semelhante àquela mostrada a seguir.

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb      8:16   0   14G  0 disk 
    └─sdb1   8:17   0   14G  0 part /mnt
    sr0     11:0    1  628K  0 rom  
    sdc      8:32   0   64G  0 disk 
    sda      8:0    0   30G  0 disk 
    └─sda1   8:1    0   30G  0 part /
    

    Você verá a unidade de 64 GB, sdc, que acabou de criar. Você verá que não está montada. Isso ocorre porque ela ainda não foi inicializada.

  3. Execute o seguinte comando az vm extension set para executar o script Bash previamente criado na sua VM.

    Aviso

    O script modifica /etc/fstab. A modificação inadequada do arquivo /etc/fstab pode resultar em um sistema não inicializável. Sempre teste as alterações na configuração em um sistema de rascunho temporário antes de implantar na produção. Veja a documentação da distribuição sobre como modificar este arquivo corretamente. Na produção, também recomendamos que você crie um backup desse arquivo para que possa restaurar a configuração se necessário.

    az vm extension set \
      --vm-name support-web-vm01 \
      --name customScript \
      --publisher Microsoft.Azure.Extensions \
      --settings '{"fileUris":["https://raw.githubusercontent.com/MicrosoftDocs/mslearn-add-and-size-disks-in-azure-virtual-machines/master/add-data-disk.sh"]}' \
      --protected-settings '{"commandToExecute": "./add-data-disk.sh"}'
    

    Enquanto o comando é executado, se desejar, você poderá examinar o script do Bash em uma guia separada no navegador.

    Para resumir, o script:

    • Particiona a unidade /dev/sdc.
    • Cria um sistema de arquivos ext4 na unidade.
    • Crie o diretório /uploads, que usamos como nosso ponto de montagem.
    • Anexa o disco ao ponto de montagem.
    • Atualiza /etc/fstab, para que a unidade seja montada automaticamente após a reinicialização do sistema.
  4. Para verificar a configuração, execute o mesmo comando ssh como fez anteriormente para executar o comando lsblk em sua VM ao longo de uma conexão SSH.

    ssh azureuser@$ipaddress lsblk
    

    Você verá que sdc/sdc1 é particionada e montada no diretório /uploads conforme esperado.

    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sdb      8:16   0   14G  0 disk 
    └─sdb1   8:17   0   14G  0 part /mnt
    sr0     11:0    1  628K  0 rom  
    sdc      8:32   0   64G  0 disk 
    └─sdc1   8:33   0   64G  0 part /uploads
    sda      8:0    0   30G  0 disk 
    └─sda1   8:1    0   30G  0 part /
    

Dica

Alguns kernels Linux dão suporte ao TRIM para descartar os blocos não utilizados em discos. Esse recurso está disponível nos discos do Azure e você poderá economizar dinheiro se criar arquivos grandes e, em seguida, excluí-los. Saiba como ativar esse recurso na documentação do Azure.

Resumo

Aqui, você criou um disco de dados e o anexou à sua VM. Você usou a Extensão de Script Personalizado para executar um script de Bash previamente criado na sua VM para tornar o processo mais repetível. O script Bash particiona, formata e monta seu disco para que o servidor Web possa gravar nele.

Agora que já preparou o disco de dados na sua VM, vamos explorar um pouco mais os vários tipos de discos que pode criar. Sua decisão principal é escolher entre o armazenamento Standard ou Premium.