Tutorial: Creación y uso de una imagen personalizada para conjunto de escalado de máquinas virtuales con la CLI de Azure

Al crear el conjunto de escalado, se especifica la imagen que se usará cuando se implementen las instancias de máquina virtual. Para reducir el número de tareas después de implementar las instancias de máquina virtual, puede usar una imagen de máquina virtual personalizada. Esta imagen de máquina virtual personalizada incluye la instalación o configuración de las aplicaciones necesarias. Las instancias de máquina virtual creadas en el conjunto de escalado usan la imagen de máquina virtual personalizada y están listas para atender el tráfico de la aplicación. En este tutorial, aprenderá a:

  • Crear una instancia de Azure Compute Gallery
  • Creación de una definición de imagen especializada
  • Creación de la versión de una imagen
  • Creación de un conjunto de escalado a partir de una imagen especializada
  • Compartir una galería de imágenes

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Requisitos previos

  • En este artículo se necesita la versión 2.4.0 de la CLI de Azure, o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

Información general

Una instancia de Azure Compute Gallery simplifica el uso compartido de imágenes personalizadas en las organizaciones. Las imágenes personalizadas son como las imágenes de Marketplace, pero las puede crear usted mismo. Las imágenes personalizadas pueden usarse para configuraciones de arranque como la carga previa de aplicaciones, configuraciones de aplicaciones y otras configuraciones del sistema operativo.

Azure Compute Gallery permite compartir sus imágenes de máquina virtual personalizadas con otros usuarios. Elija las imágenes que desea compartir, qué regiones desea que estén disponibles en ellas y con quién desea compartirlas.

Creación y configuración de una máquina virtual de origen

En primer lugar, cree un grupo de recursos con az group create y luego cree una máquina virtual con az vm create. Esta máquina virtual se usa después como origen de la imagen.

En el ejemplo siguiente se crea una máquina virtual basada en Linux denominada myVM en el grupo de recursos denominado myResourceGroup.

export RANDOM_ID=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_ID"
export REGION="eastus"
export MY_VM_NAME="myVM"

az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION

az vm create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_VM_NAME \
  --image debian11 \
  --admin-username azureuser \
  --generate-ssh-keys

Sugerencia

El identificador de la máquina virtual se muestra en la salida del comando az vm create. Copie y almacene esto en una ubicación segura para poder usarlo más adelante en este tutorial.

Una galería de imágenes es el recurso principal que se usa para habilitar el uso compartido de imágenes.

Los caracteres permitidos para los nombres de la galería son letras mayúsculas o minúsculas, dígitos, puntos y puntos. El nombre de la galería no puede contener guiones. Los nombres de las galerías deben ser únicos dentro de su suscripción.

Cree una galería de imágenes mediante az sig az create.

En el ejemplo siguiente:

  • Cree un grupo de recursos para la galería denominada myGalleryRG ubicado en Este de EE. UU..
  • La galería se denomina myGallery.
export MY_GALLERY_RG_NAME="myGalleryRG$RANDOM_ID"
export MY_GALLERY_NAME="myGallery$RANDOM_ID"

az group create --name $MY_GALLERY_RG_NAME --location $REGION
az sig create --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME

Creación de la definición de una imagen

Las definiciones de imagen crean una agrupación lógica de imágenes. Estas se usan para administrar la información sobre las versiones de la imagen que se crean dentro de ellas.

Los nombres de las definiciones de imagen pueden estar formados por letras mayúsculas o minúsculas, números, puntos y guiones.

Asegúrese de que la definición de la imagen sea el tipo correcto:

  • Estado: si ha generalizado la máquina virtual (con Sysprep para Windows o waagent -desaprovisión para Linux), debe crear una definición de imagen generalizada mediante --os-state generalized. Si quiere usar la máquina virtual sin quitar las cuentas de usuario existentes, cree una definición de imagen especializada mediante --os-state specialized.
  • Tipo de seguridad: las nuevas máquinas virtuales de Azure se crean con inicio seguro configurado de forma predeterminada. En este tutorial se incluyen ejemplos de código posteriores que reflejan la configuración de inicio seguro al crear la definición de imagen y el conjunto de escalado. Si va a crear una imagen con una máquina virtual que no tenga habilitado el inicio seguro, asegúrese de reflejar el tipo de seguridad correcto al crear ambos recursos. Para obtener más información sobre el inicio seguro, consulte Inicio seguro para máquinas virtuales de Azure.

Para más información sobre los valores que se pueden especificar para una definición de imagen, consulte Definiciones de imagen.

Cree una definición de imagen en la galería mediante az sig image-definition create.

En el ejemplo siguiente, la definición de la imagen es:

  • Denominado myImageDefinition.
  • Configurado para una imagen de sistema operativo Linux especializada . Para crear una definición para las imágenes que usan un sistema operativo Windows, utilice --os-type Windows.
  • Configurado para inicio seguro.
export MY_IMAGE_DEF_NAME="myImageDefinition$RANDOM_ID"
MY_PUBLISHER_NAME="myPublisher$RANDOM_ID"

az sig image-definition create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --publisher $MY_PUBLISHER_NAME \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized \
   --features SecurityType=TrustedLaunch

Sugerencia

El identificador de la definición de la imagen se muestra en la salida del comando. Copie y almacene esto en una ubicación segura para poder usarlo más adelante en este tutorial.

Creación de la versión de la imagen

Cree una versión de la imagen a partir de la máquina virtual con az image gallery create-image-version.

Los caracteres permitidos para la versión de la imagen son números y puntos. Los números deben estar dentro del rango de un entero de 32 bits. Formato: VersiónPrincipal.VersiónSecundaria.Revisión.

En el ejemplo siguiente:

  • La versión de la imagen es 1.0.0.
  • Creamos una réplica en la Región Centro-sur de EE. UU y una réplica en la región Este de EE. UU. Las regiones de replicación deben incluir la región donde se encuentra la máquina virtual de origen.
  • --virtual-machine es el identificador de la máquina virtual que hemos creado anteriormente.
export MY_VM_ID=$(az vm show --name $MY_VM_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query "id" --output tsv)

az sig image-version create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --gallery-image-version 1.0.0 \
   --target-regions "southcentralus=1" "eastus=1" \
   --virtual-machine $MY_VM_ID

Nota:

Debe esperar a que la versión de la imagen termine completamente de compilarse y replicarse para poder usar la misma imagen para crear otra versión de imagen.

También puede almacenar la imagen en almacenamiento Premium agregando --storage-account-type premium_lrs o en almacenamiento con redundancia de zona agregando --storage-account-type standard_zrs al crear la versión de la imagen.

Creación de un conjunto de escalado a partir de una imagen

Cree un conjunto de escalado mediante az vmss create. Si usa una máquina virtual de origen especializada, agregue el parámetro --specialized para indicar que es una imagen especializada.

Cuando se usa el identificador de definición de imagen--image para crear las instancias del conjunto de escalado, se crea un conjunto de escalado que usa la versión más reciente de la imagen que está disponible. Si desea una versión específica de la imagen, asegúrese de incluir la imagen versión identificador al definir el --image.

  • Ejemplo de imagen más reciente: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage

  • Ejemplo de imagen específica: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage/versions/1.0.0

En el ejemplo siguiente, el conjunto de escalado es:

  • Denominado myScaleSet
  • Con la versión más reciente de la imagen de myImageDefinition.
  • Configurado para inicio seguro.
export MY_IMAGE_DEF_ID=$(az sig image-definition show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --gallery-image-definition $MY_IMAGE_DEF_NAME --query "id" --output tsv)
export MY_SCALE_SET_RG_NAME="myResourceGroup$RANDOM_ID"
export MY_SCALE_SET_NAME="myScaleSet$RANDOM_ID"

az group create --name $MY_SCALE_SET_RG_NAME --location eastus

az vmss create \
   --resource-group $MY_SCALE_SET_RG_NAME \
   --name $MY_SCALE_SET_NAME \
   --orchestration-mode flexible \
   --image $MY_IMAGE_DEF_ID \
   --specialized \
   --security-type TrustedLaunch

Se tardan unos minutos en crear y configurar todos los recursos de conjunto de escalado y máquinas virtuales.

Puede compartir imágenes entre suscripciones mediante el control de acceso basado en rol de Azure (RBAC de Azure) y puede compartirlas en los niveles de galería, definición de imágenes o versión de imagen. Cualquier usuario con permiso de lectura para una versión de imagen, incluso entre suscripciones, puede implementar una máquina virtual mediante la versión de la imagen.

Se recomienda que el uso compartido con otros usuarios se realice en el nivel de la galería.

En el ejemplo siguiente:

  • Obtiene el identificador de objeto de la galería mediante az sig show.
  • Proporciona acceso a la galería mediante az crear asignación de roles.
    • Usa el identificador de objeto como ámbito de la asignación.
    • Usa el identificador del usuario que ha iniciado sesión como asignado para fines de demostración. Al usar este código en el código de prueba o producción, asegúrese de actualizar el receptor para reflejar quién desea poder acceder a esta imagen. Para más información sobre cómo compartir recursos con Azure RBAC, consulte Incorporación o eliminación de asignaciones de roles de Azure mediante la CLI de Azure. , junto con una dirección de correo electrónico, mediante az crear asignación de roles para conceder a un usuario acceso a la galería de imágenes compartidas.
export MY_GALLERY_ID=$(az sig show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --query "id" --output tsv)
export CALLER_ID=$(az ad signed-in-user show --query id -o tsv)

az role assignment create \
   --role "Reader" \
   --assignee $CALLER_ID \
   --scope $MY_GALLERY_ID

Limpieza de recursos

Para quitar el conjunto de escalado y los recursos adicionales, elimine el grupo de recursos y todos sus recursos con az group delete. El parámetro --no-wait devuelve el control a la petición de confirmación sin esperar a que finalice la operación. El parámetro --yes confirma que desea eliminar los recursos sin pedir confirmación adicional.

Pasos siguientes

En este tutorial, aprendió a crear y utilizar una imagen de máquina virtual personalizada para los conjuntos de escalado con la CLI de Azure:

  • Crear una instancia de Azure Compute Gallery
  • Creación de una definición de imagen especializada
  • Creación de la versión de una imagen
  • Creación de un conjunto de escalado a partir de una imagen especializada
  • Compartir una galería de imágenes

Vaya al siguiente tutorial para aprender cómo implementar aplicaciones en el conjunto de escalado.