Ejercicio: Incorporación de discos de datos a máquinas virtuales

Su bufete de abogados está ampliando la carga de casos y se le ha encargado instalar un nuevo servidor web Linux para almacenar documentos críticos de una variedad de orígenes: clientes, otros bufetes de abogados y oficinas de seguridad pública. El servidor web permite a los usuarios cargar documentos y almacenarlos en el disco.

Sugerencia

Este ejercicio usa Linux como ejemplo, pero el proceso básico de creación de máquinas virtuales y adición de discos es el mismo para Windows. La diferencia principal sería la forma de particionar y formatear el disco. En Windows, puede conectarse a la máquina virtual a través de Escritorio remoto y usar las herramientas integradas de administración de discos o implementar un script de PowerShell que sea similar al script de Bash que usaremos aquí.

El objetivo aquí es crear una máquina virtual Linux y asociar un nuevo disco duro virtual (VHD) llamado uploadDataDisk1 para almacenar el directorio /uploads.

Establecer los valores predeterminados de CLI de Azure

La CLI de Azure permite establecer valores predeterminados para no tener que repetirlos cada vez que ejecute un comando.

Aquí especificará la ubicación o región predeterminada de Azure. Esta es la ubicación donde se colocará la máquina virtual de Azure.

Lo ideal es que esté cerca de los clientes. En este caso, seleccione la región más cercana a usted de las ubicaciones disponibles para el espacio aislado de Azure.

El espacio aislado gratuito permite crear recursos en un subconjunto de las regiones globales de Azure. Seleccione una región de la lista al crear los recursos:

  • westus2
  • southcentralus
  • centralus
  • eastus
  • westeurope
  • southeastasia
  • japaneast
  • brazilsouth
  • australiasoutheast
  • centralindia
  1. Ejecute az configure para establecer la ubicación predeterminada que quiera usar. Reemplace eastus con la ubicación elegida en el paso anterior.

    az configure --defaults location=eastus
    

    Sugerencia

    Puede usar el botón Copiar para copiar los comandos en el Portapapeles. Para pegar, haga clic con el botón derecho en una nueva línea en la ventana de Cloud Shell y seleccione Pegar o use el método abreviado de teclado Mayús+Insert (⌘+V en macOS).

  2. Establezca el nombre del grupo de recursos predeterminado en el grupo de recursos preconfigurado que creó para el espacio aislado de Azure: [grupo de recursos de espacio aislado]

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

Creación de una máquina virtual Linux

Aquí creará una máquina virtual Linux para hospedar el servidor web.

  1. Ejecute el comando az vm create para crear la máquina virtual Ubuntu Linux.

    az vm create \
      --name support-web-vm01 \
      --image Canonical:UbuntuServer:16.04-LTS:latest \
      --size Standard_DS1_v2 \
      --admin-username azureuser \
      --generate-ssh-keys
    
    • El nombre de la máquina virtual es support-web-vm01.
    • Su tamaño es Standard_DS1_v2.
    • El nombre de usuario de administrador es azureuser. En la práctica, este nombre puede ser el que quiera.
    • El argumento --generate-ssh-keys genera un par de claves SSH que le permiten conectarse a la máquina virtual a través de SSH.

    La máquina virtual tarda en aparecer unos minutos. Cuando la máquina virtual esté preparada, verá información sobre ella en formato JSON. Aquí tiene un ejemplo.

    {
      "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": ""
    }
    

    Nota

    En esta lección usará esta máquina virtual para aprender a administrar discos. En la práctica, es posible que también instale el servidor web y otro software y después ejecute az vm open-port para que los puertos estén disponibles para el mundo exterior.

Adición de un disco de datos vacío a la máquina virtual

Aquí creará un disco de datos vacío y lo adjuntará a la máquina virtual. El disco de datos tendrá inicialmente un tamaño de 64 GB. Más adelante, montará este disco en el directorio /uploads en la máquina virtual.

Sugerencia

Con fines de aprendizaje, está creando la máquina virtual y el disco de datos en pasos independientes. En la práctica, puede especificar el argumento --data-disk-sizes-gb al comando az vm create para agregar discos de datos cuando se cree la máquina virtual.

  1. Ejecute el siguiente comando az vm disk attach para agregar un nuevo disco vacío a la máquina virtual.

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

    Este comando:

    • Asigna el nombre uploadDataDisk1 al disco.
    • Establece el tamaño en 64 GB.
    • Especifica que use el almacenamiento Premium con redundancia local.

Para usar el disco, tiene que crear particiones y formatearlo. Lo haremos ahora después.

Inicializar y formatear el disco de datos

La unidad de datos vacía debe inicializarse y formatearse. El proceso para hacerlo es el mismo que para un disco físico.

Para tareas únicas, conéctese manualmente a la máquina virtual a través de SSH y ejecute los comandos que necesite. Para que el proceso sea más repetitivo y con menos tendencia a errores, puede usar un script de Bash (o un script de PowerShell cuando esté disponible) que especifique los comandos que necesita.

El uso de un script para automatizar el proceso tiene una ventaja adicional: el script sirve como documentación para explicar cómo se realiza el proceso. Otros usuarios pueden leer el script para entender cómo se ha configurado el sistema. Si necesita cambiar el proceso, solo tiene que modificar el script y probarlo en una máquina virtual temporal creada desde cero antes de implementar el cambio en producción.

Para automatizar el proceso en esta lección, deberá usar la extensión de script personalizado. La extensión de script personalizado es una manera fácil de descargar y ejecutar scripts en máquinas virtuales de Azure. Es solo una de las numerosas formas en que puede configurar el sistema una vez que la máquina virtual esté en funcionamiento.

Puede almacenar los scripts en Azure Storage o en una ubicación pública, como GitHub. Puede ejecutar scripts manualmente o como parte de una implementación más automatizada. Aquí, ejecutará un comando de la CLI de Azure para descargar un script de Bash prefabricado desde GitHub y ejecutarlo en su máquina virtual.

Con fines de aprendizaje, aquí también ejecutará algunos comandos en la máquina virtual para comprobar que la máquina virtual está configurada como quería.

  1. Ejecute az vm show para obtener la dirección IP pública de la máquina virtual y guarde la dirección IP como una variable de Bash.

    ipaddress=$(az vm show \
      --name support-web-vm01 \
      --show-details \
      --query [publicIps] \
      --output tsv)
    
  2. Ejecute el siguiente comando ssh para ejecutar el comando lsblk en la máquina virtual a través de una conexión SSH usando los datos variables de ipaddress que acaba de crear. Recuerde que azureuser era el nombre de usuario de administrador que usamos cuando creamos la máquina virtual. Si ha elegido un nombre diferente, use ese en su lugar. Indique "Sí" cuando se le pida.

    ssh azureuser@$ipaddress lsblk
    

    La salida del comando debe tener el siguiente aspecto.

    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 /
    

    Verá la unidad de 64 GB, sdc, que acaba de crear. Verá que no está montada. Esto es porque aún no se ha inicializado.

  3. Ejecute el siguiente comando az vm extension set para ejecutar el script de Bash prefabricado en la máquina virtual.

    Advertencia

    El script modifica /etc/fstab. Si archivo /etc/fstab se modifica incorrectamente, puede provocar que no se pueda arrancar el sistema. Pruebe siempre los cambios de configuración en un sistema temporal creado desde cero antes de implementar en producción. Vea la documentación sobre la distribución para obtener información sobre cómo modificar correctamente este archivo. En producción, también se recomienda crear una copia de seguridad de este archivo para restaurar la configuración si es necesario.

    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"}'
    

    Mientras se ejecuta el comando, puede examinar el script Bash en una pestaña independiente del explorador.

    En resumen, el script:

    • Crea particiones de la unidad /dev/sdc.
    • Crea un sistema de archivos ext4 en la unidad.
    • Crear el directorio /uploads, que usamos como nuestro punto de montaje.
    • Adjunta el disco al punto de montaje.
    • Actualiza /etc/fstab para que la unidad se monte automáticamente después de reiniciar el sistema.
  4. Para comprobar la configuración, ejecute el mismo comando ssh como hizo anteriormente para ejecutar el comando lsblk en la máquina virtual a través de una conexión SSH.

    ssh azureuser@$ipaddress lsblk
    

    Verá que sdc/sdc1 se particiona y se monta en el directorio /uploads según lo 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 /
    

Sugerencia

Algunos kernels de Linux admiten operaciones TRIM para descartar los bloques no usados del disco. Esta característica está disponible en los discos de Azure y puede ahorrarle dinero si crea archivos grandes y luego los elimina. En la documentación de Azure se explica cómo activar esta característica.

Resumen

Ha creado un disco de datos y lo ha adjuntado a la máquina virtual. Ha usado la extensión de script personalizado para ejecutar un script de Bash prefabricado en la máquina virtual para que el proceso sea más repetitivo. El script de Bash crea particiones del disco, lo formatea y lo monta para que el servidor web pueda escribir en él.

Ahora que ha preparado el disco de datos en la máquina virtual, vamos a profundizar en varios tipos de discos que puede crear. La decisión principal es elegir entre el almacenamiento Estándar o Premium.