Creare un file system lustre gestito di Azure usando i modelli di Azure Resource Manager

È possibile automatizzare la creazione del file system gestito di Azure usando i modelli di Resource Manager di Azure. Questo articolo illustra la procedura di base e fornisce esempi dei file necessari.

Per altre informazioni sui modelli, vedere Modelli di Azure Resource Manager.

Questo articolo offre esempi di due diversi metodi per la creazione di modelli di Azure Resource Manager:

  • Usare JSON per creare direttamente modelli di Resource Manager di Azure. Vedere sintassi del modello JSON.
  • Usare Bicep, che usa una sintassi più semplice per fornire i dettagli della configurazione. Quando si distribuisce il modello, i file Bicep vengono convertiti in file di modello di Azure Resource Manager. Vedere la documentazione di Bicep.

Per altre informazioni sulle opzioni, vedere Confronto di JSON e Bicep per i modelli.

Scegliere il tipo e le dimensioni del file system

Prima di scrivere un modello, è necessario prendere alcune decisioni sul file system di Lustre gestito di Azure. Per altre informazioni sulle opzioni di configurazione, vedere i dettagli della configurazione in Creare un file system lustre gestito di Azure.

Quando si usa un modello, specificare un nome SKU per definire il tipo di base del sistema Lustre gestito di Azure da creare. Se si usa il portale di Azure per creare la lustre gestita di Azure, specificare indirettamente il tipo di sistema selezionando le relative funzionalità.

In Azure il termine SKU definisce un set di funzionalità per la risorsa creata. Per un file system lustre gestito di Azure, lo SKU imposta le qualità del sistema, ad esempio il tipo di dischi usati, la quantità di archiviazione supportata e la capacità massima di velocità effettiva.

Attualmente sono supportati gli SKU seguenti:

  • AMLFS-Durable-Premium-40
  • AMLFS-Durable-Premium-125
  • AMLFS-Durable-Premium-250
  • AMLFS-Durable-Premium-500

Questi SKU creano un file system che usa l'archiviazione SSD durevole. La tabella seguente mostra i valori di velocità effettiva e dimensione di archiviazione per ogni SKU:

SKU Velocità effettiva per l'archiviazione TiB Archiviazione min Archiviazione max1 Incremento valore Identity
AMLFS-Durable-Premium-40 40 MB/secondo 48 TB 768 TB 48 TB
AMLFS-Durable-Premium-125 125 MB/secondo 16 TB 128 TB 16 TB
AMLFS-Durable-Premium-250 250 MB/secondo 8 TB 128 TB 8 TB
AMLFS-Durable-Premium-500 500 MB/secondo 4 TB 128 TB 4 TB

1 Se si richiedono valori di archiviazione superiori al massimo elencato, è possibile aprire un ticket di supporto per esplorare le opzioni.

È possibile usare il flusso di lavoro di creazione in portale di Azure per controllare le funzionalità dello SKU. Le impostazioni specifiche dello SKU sono disponibili nella scheda Nozioni di base in Dettaglidel file system.

Suggerimento

Per controllare i nomi di SKU disponibili, vedere Informazioni necessarie per un comando che è possibile usare.

Creare un file di modello

Dopo aver deciso le opzioni di configurazione, è possibile creare un file modello. Il file modello è un file JSON o Bicep che contiene i dettagli di configurazione per il file system di Lustre gestito di Azure. Questa sezione illustra le informazioni necessarie e facoltative da includere nel file di modello.

Ad esempio, i file che contengono tutte le opzioni di configurazione possibili, vedere File JSON di esempio e file Bicep di esempio.

Informazioni necessarie

Questa sezione illustra le informazioni necessarie per includere nei file di modello di Azure Resource Manager per creare un file system di Lustre gestito di Azure. La sintassi esatta è diversa tra Bicep e JSON, quindi consultare gli esempi per ogni tipo di linguaggio per i valori letterali.

  • Tipo di risorsa da creare: questo valore indica ad Azure Resource Manager che si sta creando un file system lustre gestito di Azure passando una combinazione del valore Microsoft.StorageCache/amlFileSystems e della versione dell'API.

    Esistono diversi modi per creare il tipo di risorsa:

    • Nell'esempio JSON di questo articolo il valore del tipo di risorsa viene passato letteralmente nel file template.json , ma il valore della versione dell'API viene letto dal file parameters.json .
    • Nell'esempio Bicep, il tipo di risorsa e la versione dell'API vengono passati insieme all'inizio del file modello.
  • Versione dell'API : versione di Lustre gestita di Azure da creare.

    Per trovare la versione dell'API corrente:

    az provider show --namespace Microsoft.StorageCache --query "resourceTypes[?resourceType=='amlFilesystems'].apiVersions" --out table
    
  • Nome SKU : modello di prestazioni per il file system o AMLFS-Durable-Premium-125AMLFS-Durable-Premium-250.

    Usare il comando seguente per trovare SKU disponibili (usare la versione dell'API corrente):

    az rest --url https://management.azure.com/subscriptions/<subscription_id>/providers/Microsoft.StorageCache/skus/?api-version=<version> | jq '.value[].name' | grep AMLFS| uniq
    
  • Percorso : nome dell'area di Azure in cui viene creato il file system.

    Per trovare le aree e le zone di disponibilità in cui è supportato Lustre gestito di Azure:

    az provider show --namespace Microsoft.StorageCache --query "resourceTypes[?resourceType=='amlFilesystems'].zoneMappings[].{location: location, zones: to_string(zones)}" --out table
    

    Nota

    Questo comando restituisce i nomi visualizzati delle aree di Azure; è consigliabile usare il valore più name breve , ad esempio usare "eastus" anziché "Stati Uniti orientali").

    Questo comando restituisce il nome breve dal nome visualizzato. Stati Uniti occidentali è un esempio; questo comando restituisce westus:

    az account list-locations --query "[?displayName=='West US'].name" --output tsv
    
  • Zona di disponibilità : zona di disponibilità da usare all'interno dell'area di Azure.

    Usare il comando precedente in Posizione per trovare le zone di disponibilità. Specificare una singola zona di disponibilità per il sistema.

  • Nome file system: nome visibile dall'utente per questo file system gestito di Azure.

  • Subnet del file system : subnet usata dal file system. Specificare l'URI della subnet; ad esempio , /subscriptions/<SubscriptionID>/resourceGroups/<VnetResourceGroupName>/providers/Microsoft.Network/virtualNetworks/<VnetName>/subnets/<SubnetName>.

  • Capacità di archiviazione : dimensioni del cluster Lustre gestito di Azure, in TiB. I valori dipendono dallo SKU. Per altre informazioni, vedere Scegliere il tipo e le dimensioni del file system.

  • Periodo di manutenzione : richiede due valori che impostano il periodo di manutenzione. Questi valori definiscono un periodo settimanale di 30 minuti durante il quale è possibile eseguire gli aggiornamenti del sistema.

    • Giorno della settimana (ad esempio, Sunday)
    • Ora del giorno (UTC) (ad esempio, 22:00)

Informazioni facoltative

I parametri di questa sezione sono facoltativi o necessari solo se si usano funzionalità specifiche.

  • Tag : usare questa opzione se si desidera impostare i tag dei metadati delle risorse di Azure.

  • Impostazioni di integrazione BLOB : specificare questi valori per usare un contenitore di archiviazione BLOB integrato con questo sistema. Per altre informazioni, vedere Integrazione BLOB.

    • Contenitore : ID risorsa del contenitore BLOB da usare per la gestione gerarchica di archiviazione lustre (HSM).
    • Contenitore di registrazione : ID risorsa di un contenitore diverso per contenere log di importazione ed esportazione.
    • Prefisso di importazione (facoltativo): se questo valore viene fornito, solo i BLOB che iniziano con la stringa di prefisso di importazione vengono importati nel file system lustre gestito di Azure. Se non lo si specifica, il valore predefinito è /, che specifica che tutti i BLOB nel contenitore vengono importati.
  • Impostazioni della chiave gestita dal cliente: specificare questi valori se si vuole usare un Key Vault di Azure per controllare le chiavi di crittografia usate per crittografare i dati nel sistema Lustre gestito di Azure. Per impostazione predefinita, i dati vengono crittografati usando chiavi di crittografia gestite da Microsoft.

    • Tipo di identità : impostarlo su UserAssigned per attivare le chiavi gestite dal cliente.
    • Crittografia Key Vault: ID risorsa dell'Key Vault di Azure che archivia le chiavi di crittografia.
    • URL della chiave di crittografia : identificatore della chiave da usare per crittografare i dati.
    • Identità gestita: un'identità gestita assegnata dall'utente usata dal file system lustre di Azure per accedere al Key Vault di Azure. Per altre informazioni, vedere Usare chiavi di crittografia gestite dal cliente.

Distribuire il file system usando il modello

Questi passaggi di esempio usano i comandi dell'interfaccia della riga di comando di Azure per creare un nuovo gruppo di risorse e creare un file system lustre gestito di Azure.

Prima di distribuire, assicurarsi di completare la procedura seguente:

Seguire questa procedura per distribuire il file system usando il modello:

  1. Impostare la sottoscrizione predefinita:

    az account set --subscription "<SubscriptionID>"
    az account show
    
  2. Facoltativamente, creare un nuovo gruppo di risorse per il file system lustre gestito di Azure. Se si vuole usare un gruppo di risorse esistente, ignorare questo passaggio e specificare il nome del gruppo di risorse esistente quando si esegue il comando modello.

    az group create --name <ResourceGroupName> --location <RegionShortname>
    

    Il file system può usare risorse esterne al proprio gruppo di risorse purché si trovino nella stessa sottoscrizione.

  3. Distribuire il file system lustre gestito di Azure usando il modello. La sintassi è diversa a seconda che si usino file JSON o Bicep e il numero di file usati.

    È possibile distribuire modelli Bicep e JSON come singoli file o più file. Per altre informazioni e per visualizzare la sintassi esatta per ogni opzione, vedere la documentazione dei modelli di Azure Resource Manager.

    Comando JSON di esempio:

    az deployment group create \
      --name <ExampleDeployment> \
      --resource-group <ResourceGroupName> \
      --template-file azlustre-template.json \
      --parameters @azlustre-parameters.json
    

    Comando Bicep di esempio:

    az deployment group create \
     --resource-group <ResourceGroupName> \
     --template-file azlustre.bicep
    

File JSON di esempio

Questa sezione mostra il contenuto di esempio per un file modello e un file di parametri separato. Questi file contengono tutte le possibili opzioni di configurazione. È possibile rimuovere parametri facoltativi durante la creazione di un modello di azure Resource Manager.

File modello

Questa sezione mostra il contenuto di esempio di un file modello:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "type": "String"
        },
        "apiVersion": {
            "type": "String"
        },
        "fileSystemName": {
            "type": "String"
        },
        "availabilityZone": {
            "type": "Array"
        },
        "subnetId": {
            "type": "String"
        },
        "storageCapacityTiB": {
            "type": "Int"
        },
        "container": {
            "type": "String"
        },
        "loggingContainer": {
            "type": "String"
        },
        "importPrefix": {
            "type": "String"
        },
        "dayOfWeek": {
            "type": "String"
        },
        "timeOfDay": {
            "type": "String"
        },
        "encryptionKeyUrl": {
            "type": "String"
        },
        "encryptionVault": {
            "type": "String"
        }
    },
    "resources": [
        {
            "type": "Microsoft.StorageCache/amlFileSystems",
            "apiVersion": "[parameters('apiVersion')]",
            "name": "[parameters('fileSystemName')]",
            "location": "[parameters('location')]",
            "tags": {
                "MyTagName": "TagValue"
            },
            "sku": {
                "name": "AMLFS-Durable-Premium-250"
            },
            "identity": {
                "type": "UserAssigned",
                "userAssignedIdentities": {
                    "/subscriptions/<subscription_id>/resourcegroups/<identity_resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name_of_identity>": {}
                }
            },
            "properties": {
                "storageCapacityTiB": "[parameters('storageCapacityTiB')]",
                "zones": "[parameters('availabilityZone')]",
                "filesystemSubnet": "[parameters('subnetId')]",
                "hsm": {
                    "settings": {
                        "container": "[parameters('container')]",
                        "loggingContainer": "[parameters('loggingContainer')]",
                        "importPrefix": "[parameters('importPrefix')]"
                    }
                },
                "maintenanceWindow": {
                    "dayOfWeek": "[parameters('dayOfWeek')]",
                    "timeOfDay": "[parameters('timeOfDay')]"
                },
                "encryptionSettings": {
                    "keyEncryptionKey": {
                        "keyUrl": "[parameters('encryptionKeyUrl')]",
                        "sourceVault": {
                            "id": "[parameters('encryptionVault')]"
                        }
                    }
                }
            }
        }
    ],
    "outputs": {}
}

File dei parametri

Questa sezione mostra il contenuto di esempio di un file di parametri:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "location": {
            "value": "eastus"
        },
        "apiVersion": {
            "value": "2023-05-01"
        },
        "fileSystemName": {
            "value": "amlfs-example"
        },
        "availabilityZone": {
            "value": [
                "1"
            ]
        },
        "subnetId": {
            "value": "/subscriptions/<subscription_id>/resourceGroups/<vnet_resource_group>/providers/Microsoft.Network/virtualNetworks/<vnet>/subnets/<subnet>"
        },
        "storageCapacityTiB": {
            "value": 4
        },
        "container": {
            "value": "/subscriptions/<subscription_id>/resourceGroups/<storage_account_resource_group>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>/blobServices/default/containers/<container_name>"
        },
        "loggingContainer": {
            "value": "/subscriptions/<subscription_id>/resourceGroups/<storage_account_resource_group>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>/blobServices/default/containers/<log_container_name>"
        },
        "importPrefix": {
            "value": ""
        },
        "dayOfWeek": {
            "value": "Saturday"
        },
        "timeOfDay": {
            "value": "16:45"
        },
        "encryptionKeyUrl": {
            "value": "<encryption_key_URL>"
        },
        "encryptionVault": {
            "value": "/subscriptions/<subscription_id>/resourceGroups/<keyvault_resource_group>/providers/Microsoft.KeyVault/vaults/<keyvault_name>"
        }
    }
}

File Bicep di esempio

Questo esempio include tutti i valori possibili in un modello di Lustre gestito di Azure. Quando si crea il modello, rimuovere tutti i valori facoltativi, non si vuole.

resource fileSystem 'Microsoft.StorageCache/amlFileSystems@2023-05-01' = {
  name: 'fileSystemName'
  location: 'eastus'
  tags: {
    'test-tag': 'test'
  }
  sku: {
    name: 'AMLFS-Durable-Premium-250'
  }
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '/subscriptions/<subscription_id>/resourcegroups/<identity_resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<name_of_identity>': {
      }
    }
  }
  properties: {
    storageCapacityTiB: 8
    zones: [ 1 ]
    filesystemSubnet: '/subscriptions/<subscription_id>/resourceGroups/<vnet_resource_group>/providers/Microsoft.Network/virtualNetworks/<vnet>/subnets/<subnet>'
    hsm: {
      settings: {
        container: '/subscriptions/<subscription_id>/resourceGroups/<storage_account_resource_group>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>/blobServices/default/containers/<container_name>'
        loggingContainer: '/subscriptions/<subscription_id>/resourceGroups/<storage_account_resource_group>/providers/Microsoft.Storage/storageAccounts/<storage_account_name>/blobServices/default/containers/<log_container_name>'
        importPrefix: ''
      }
    }
    maintenanceWindow: {
      dayOfWeek: 'Friday'
      timeOfDay: '21:00'
    }
    encryptionSettings: {
      keyEncryptionKey: {
        keyUrl: '<encryption_key_URL>'
        sourceVault: {
          id: '/subscriptions/<subscription_id>/resourceGroups/<keyvault_resource_group>/providers/Microsoft.KeyVault/vaults/<keyvault_name>'
        }
      }
    }
  }
}

Passaggi successivi