Creación de un sistema de archivos de Azure Managed Lustre mediante plantillas de Azure Resource Manager
Puede automatizar la creación de un sistema de archivos de Azure Managed Lustre mediante plantillas de Azure Resource Manager (ARM). En este artículo se explica el procedimiento básico y se proporcionan ejemplos de los archivos que necesita.
En este artículo se proporcionan ejemplos de dos métodos diferentes para crear plantillas de ARM:
- Use JSON para crear plantillas de ARM directamente. Para más información, consulte Sintaxis de plantilla JSON.
- Use Bicep, que usa una sintaxis más sencilla para proporcionar los detalles de configuración. Al implementar la plantilla, los archivos de Bicep se convierten en archivos de plantilla de ARM. Para más información, consulte la documentación de Bicep.
Para más información sobre estas opciones, consulte Comparación de JSON y Bicep para plantillas.
Elegir el tipo y el tamaño del sistema de archivos
Antes de escribir una plantilla, debe tomar algunas decisiones sobre el sistema de archivos de Azure Managed Lustre. Para más información sobre las opciones de configuración, consulte los detalles de configuración en Creación de un sistema de archivos de Azure Managed Lustre.
Al usar una plantilla, especifique una SKU para definir el tipo básico de sistema de archivos de Azure Managed Lustre que se va a crear. La SKU representa un nivel de producto. Establece cualidades del sistema como el tipo de discos, la cantidad de almacenamiento admitida y la capacidad de rendimiento máxima. Si usa Azure Portal para crear el sistema de archivos de Azure Managed Lustre, especifique el tipo de sistema indirectamente seleccionando sus funcionalidades.
En la tabla siguiente se muestran los valores de rendimiento y tamaño de almacenamiento en cada SKU compatible. Estas SKU crean un sistema de archivos que usa almacenamiento SSD duradero.
SKU | Rendimiento por almacenamiento de TiB | Almacenamiento mínimo | Almacenamiento máximo | Increment |
---|---|---|---|---|
AMLFS-Durable-Premium-40 | 40 MBps | 48 TB | 768 TB | 48 TB |
AMLFS-Durable-Premium-125 | 125 Mbps | 16 TB | 128 TB | 16 TB |
AMLFS-Durable-Premium-250 | 250 MBps | 8 TB | 128 TB | 8 TB |
AMLFS-Durable-Premium-500 | 500 MBps | 4 TB | 128 TB | 4 TB |
Si necesita valores de almacenamiento mayores que el máximo enumerado, puede abrir una incidencia de soporte técnico para explorar las opciones.
Para comprobar las funcionalidades de SKU, puede usar el flujo de trabajo para crear un sistema de archivos de Lustre administrado mediante Azure Portal. La configuración específica de la SKU se encuentra en la pestaña Aspectos básicos en Detalles del sistema de archivos.
Creación de un archivo de plantilla
Después de decidir las opciones de configuración, puede crear un archivo de plantilla. El archivo de plantilla es un archivo JSON o Bicep que contiene los detalles de configuración del sistema de archivos de Azure Managed Lustre.
Valores de propiedad de plantilla
Para crear un sistema de archivos de Azure Managed Lustre mediante una plantilla de ARM, debe incluir la siguiente información en el archivo de plantilla. La sintaxis exacta es diferente entre Bicep y JSON, por lo que consulte los ejemplos de los valores literales.
Sistema de archivos
Nombre | Descripción | Valor |
---|---|---|
type | Tipo de recurso que se va a crear. | Microsoft.StorageCache/amlFileSystems |
apiVersion | Versión de Azure Managed Lustre API que se va a usar. | Use la versión actual de la API, por ejemplo, 2024-03-01 |
nombre | Un nombre único para el sistema de archivos de Azure Managed Lustre. | string (obligatorio) |
ubicación | Ubicación geográfica donde reside el recurso. Use el nombre corto en lugar del nombre para mostrar, por ejemplo, use eastus en lugar de East US . |
string (obligatorio) |
etiquetas | Etiquetas de recursos para el sistema de archivos. | Diccionario de nombres y valores de etiqueta; consulte Etiquetas en plantillas |
sku | SKU de rendimiento para el recurso. | Consulte el nombre de la SKU. |
identity | Identidad administrada que se va a usar para el sistema de archivos, si está configurada. | Consulte Identidad. |
properties | Propiedades del sistema de archivos. | Consulte Propiedades. |
zones | Zonas de disponibilidad para recursos. Este campo solo debe contener un solo elemento en la matriz. | string[] |
Identidad
Nombre | Descripción | Valor |
---|---|---|
type | Tipo de identidad que se usa para el recurso. | None , UserAssigned |
userAssignedIdentities | Diccionario en el que cada clave es un identificador de recurso de identidad asignado por el usuario y el valor de cada clave es un diccionario vacío. | Consulte la documentación de plantilla. |
Propiedades
Name | Descripción | Valor |
---|---|---|
encryptionSettings | La configuración de cifrado del sistema de archivos. | Consulte Configuración de cifrado. |
filesystemSubnet | Subred que usa el sistema de archivos. | string (obligatorio) |
Hsm | Configuración del contenedor de Blob Storage para el sistema de archivos. | Consulte configuración de HSM. |
maintenanceWindow | Especifica el día y la hora en que se pueden producir actualizaciones del sistema. | Consulte ventana Mantenimiento (obligatorio) |
rootSquashSettings | Especifica la configuración de squash raíz para el sistema de archivos. | Consulte Configuración de squash raíz. |
storageCapacityTiB | Tamaño del sistema de archivos, en TiB. Para obtener más información sobre los valores permitidos para este campo en función de la SKU, consulte Elegir el tipo y el tamaño del sistema de archivos. | int (obligatorio) |
Configuración de cifrado
Nombre | Descripción | Valor |
---|---|---|
keyEncryptionKey | Especifica la ubicación de la clave de cifrado en Key Vault. | Consulte la documentación de plantilla. |
Configuración de HSM
Nombre | Descripción | Valor |
---|---|---|
contenedor | Identificador de recurso del contenedor de almacenamiento usado para hidratar el espacio de nombres y el archivado desde el espacio de nombres. El proveedor de recursos debe tener permiso para crear tokens de SAS en la cuenta de almacenamiento. | string (obligatorio) |
importPrefix | Solo los blobs del contenedor que no son de registro que comienzan con esta ruta de acceso o prefijo se importan en el espacio de nombres del clúster. Esto solo se usa durante la creación inicial del sistema de archivos de Azure Managed Lustre. | string |
importPrefixesInitial | Solo los blobs del contenedor que no son de registro que comienzan con una de las rutas de acceso o prefijos de esta matriz se importan en el espacio de nombres del clúster. Este valor solo se usa durante la creación inicial del sistema de archivos de Azure Managed Lustre y tiene "/" como valor predeterminado. | string[] |
loggingContainer | Identificador de recurso del contenedor de almacenamiento usado para registrar eventos y errores. Debe ser un contenedor independiente en la misma cuenta de almacenamiento que el contenedor de hidratación y archivo. El proveedor de recursos debe tener permiso para crear tokens de SAS en la cuenta de almacenamiento. | string (obligatorio) |
Nota:
La importPrefixesInitial
propiedad permite especificar varios prefijos para importar datos en el sistema de archivos, mientras importPrefix
que permite especificar un único prefijo. El valor predeterminado de ambas propiedades es /
. Si define una de las propiedades, no puede definir la otra. Si define ambas propiedades, se produce un error en la implementación.
Para más información, consulte Importar prefijo.
Ventana de mantenimiento
Nombre | Descripción | Valor |
---|---|---|
dayOfWeek | Día de la semana en el que puede producirse la ventana de mantenimiento. | Sunday , Monday , Tuesday , Wednesday , Thursday , , Friday Saturday |
timeOfDayUTC | Hora del día (en UTC) que puede producirse la ventana de mantenimiento. | ejemplo de cadena : 22:30 |
La timeOfDayUTC
propiedad usa un formato de reloj de 24 horas. Por ejemplo, 22:30
representa las 10:30 p. m. El patrón es ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
.
Configuración de la squash raíz
Nombre | Descripción | Valor |
---|---|---|
mode | Modo de squash del sistema de archivos AML. 'All': los identificadores de usuario y grupo de los archivos se agrupan a los valores proporcionados para todos los usuarios de sistemas que no son de confianza. 'RootOnly': los identificadores de usuario y grupo de los archivos se aplastan para proporcionar valores únicamente para el usuario raíz en sistemas que no son de confianza. 'Ninguno': no se realiza ninguna aplicación de identificadores de usuario y grupo para los usuarios de ningún sistema. | All , , None , RootOnly |
noSquashNidLists | Lista de direcciones IP de NID separadas por punto y coma que se agregarán a TrustedSystems. | string |
squashGID | Id. de grupo al que se va a aplastar. | int |
squashUID | Identificador de usuario al que se va a aplastar. | int |
Nombre de SKU
Nombre | Descripción | Valor |
---|---|---|
nombre | Nombre de SKU del recurso. | AMLFS-Durable-Premium-40 , AMLFS-Durable-Premium-125 , , AMLFS-Durable-Premium-250 , AMLFS-Durable-Premium-500 |
Implementación del sistema de archivos mediante la plantilla
En los pasos de ejemplo siguientes se usan comandos de la CLI de Azure para crear un nuevo grupo de recursos y crear un sistema de archivos de Azure Managed Lustre en él. En los pasos se da por hecho que ya ha elegido un tipo y tamaño del sistema de archivos y ha creado un archivo de plantilla, como se ha descrito anteriormente en este artículo. Asegúrese también de cumplir todos los requisitos previos.
Establezca la suscripción predeterminada:
az account set --subscription "<subscription-id>" az account show
Opcionalmente, cree un nuevo grupo de recursos para el sistema de archivos de Azure Managed Lustre. Si desea usar un grupo de recursos existente, omita este paso y proporcione el nombre del grupo de recursos existente al ejecutar el comando de plantilla.
az group create --name <rg-name> --location <region-short-name>
El sistema de archivos puede usar recursos fuera de su propio grupo de recursos, siempre que estén en la misma suscripción.
Implemente el sistema de archivos de Azure Managed Lustre mediante la plantilla. La sintaxis depende de si usa archivos JSON o Bicep, junto con el número de archivos.
Puede implementar plantillas bicep y JSON como archivos únicos o varios archivos. Para obtener más información y ver la sintaxis exacta de cada opción, consulte la documentación de la plantilla de ARM.
Comando JSON de ejemplo:
az deployment group create \ --name <example-deployment> \ --resource-group <resource-group-name> \ --template-file azlustre-template.json
Comando de Bicep de ejemplo:
az deployment group create \ --resource-group <ResourceGroupName> \ --template-file azlustre.bicep
Ejemplo de JSON
En esta sección se muestra el contenido de ejemplo de un archivo de plantilla JSON. Puede quitar parámetros opcionales al crear su propia plantilla de ARM.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.StorageCache/amlFilesystems",
"apiVersion": "2024-03-01",
"name": "amlfs-example",
"location": "eastus",
"tags": {
"Dept": "ContosoAds"
},
"sku": {
"name": "AMLFS-Durable-Premium-250"
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>": {}
}
},
"properties": {
"encryptionSettings": {
"keyEncryptionKey": {
"keyUrl": "https://<keyvault-name>.vault.azure.net/keys/kvk/<key>",
"sourceVault": {
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>"
}
}
},
"filesystemSubnet": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
"hsm": {
"settings": {
"container": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>",
"loggingContainer": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<logging-container-name>",
"importPrefixesInitial": [
"/"
]
}
},
"maintenanceWindow": {
"dayOfWeek": "Saturday",
"timeOfDayUTC": "22:00"
},
"rootSquashSettings": {
"mode": "All",
"noSquashNidLists": "10.0.0.[5-6]@tcp;10.0.1.2@tcp",
"squashGID": "99",
"squashUID": "99"
},
"storageCapacityTiB": "16"
},
"zones": [
"1"
],
}
],
"outputs": {}
}
Ejemplo de Bicep
En esta sección se muestra el contenido de ejemplo de un archivo de Bicep. Puede quitar parámetros opcionales al crear los suyos propios.
resource filesystem 'Microsoft.StorageCache/amlFilesystems@2024-03-01' = {
name: 'amlfs-example'
location: 'eastus'
tags: {
Dept: 'ContosoAds'
}
sku: {
name: 'AMLFS-Durable-Premium-250'
}
identity: {
type: 'UserAssigned'
userAssignedIdentities: {
'/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>': {}
}
}
properties: {
encryptionSettings: {
keyEncryptionKey: {
keyUrl: 'https://<keyvault-name>.vault.azure.net/keys/kvk/<key>'
sourceVault: {
id: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>'
}
}
}
filesystemSubnet: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>'
hsm: {
settings: {
container: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>'
importPrefixesInitial: [
'/'
]
loggingContainer: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<logging-container-name>'
}
}
maintenanceWindow: {
dayOfWeek: 'Saturday'
timeOfDayUTC: '22:00'
}
rootSquashSettings: {
mode: 'All'
noSquashNidLists: '10.0.0.[5-6]@tcp;10.0.1.2@tcp'
squashGID: 99
squashUID: 99
}
storageCapacityTiB: 16
}
zones: [
'1'
]
}