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

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

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

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

Per altre informazioni su queste opzioni, vedere Confronto tra 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 lustre gestito di Azure. Per altre informazioni sulle opzioni di configurazione, vedere i dettagli di configurazione in Creare un file system lustre gestito di Azure.

Quando si usa un modello, specificare uno SKU per definire il tipo di base del file system lustre gestito di Azure da creare. Lo SKU rappresenta un livello di prodotto. Imposta qualità di sistema, ad esempio il tipo di dischi, la quantità di spazio di archiviazione supportata e la capacità massima di velocità effettiva. Se si usa il portale di Azure per creare il file system lustre gestito di Azure, specificare indirettamente il tipo di sistema selezionandone le funzionalità.

La tabella seguente illustra i valori per la velocità effettiva e le dimensioni di archiviazione in ogni SKU supportato. Questi SKU creano un file system che usa l'archiviazione SSD durevole.

SKU Velocità effettiva per TiB Capacità di archiviazione minima Capacità di archiviazione massima Incremento valore Identity
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

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

Per controllare le funzionalità dello SKU, è possibile usare il flusso di lavoro per la creazione di un file system Lustre gestito usando il portale di Azure. Le impostazioni specifiche dello SKU sono disponibili nella scheda Informazioni di base in Dettagli del file system.

Creare un file 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 lustre gestito di Azure.

Valori delle proprietà modello

Per creare un file system lustre gestito di Azure usando un modello di Resource Manager, è necessario includere le informazioni seguenti nel file modello. La sintassi esatta è diversa tra Bicep e JSON, quindi consultare gli esempi per i valori letterali.

File system

Nome Descrizione valore
type Tipo di risorsa da creare. Microsoft.StorageCache/amlFileSystems
apiVersion Versione dell'API Lustre gestita di Azure da usare. Usare la versione dell'API corrente, ad esempio 2024-03-01
name Nome univoco per il file system Lustre gestito di Azure. stringa (obbligatorio)
location Posizione geografica in cui risiede la risorsa. Usare il nome breve anziché il nome visualizzato, ad esempio usare eastus anziché East US. stringa (obbligatorio)
tag Tag di risorsa per il file system. Dizionario di nomi e valori di tag; vedere Tag nei modelli
sku SKU delle prestazioni per la risorsa. Vedere il nome dello SKU
identity Identità gestita da usare per il file system, se configurata. Vedere Identità
proprietà Proprietà per il file system. Vedere Proprietà
zone Zone di disponibilità per le risorse. Questo campo deve contenere solo un singolo elemento nella matrice. string[]

Identità

Nome Descrizione valore
type Tipo di identità usata per la risorsa. None, UserAssigned
userAssignedIdentities Dizionario in cui ogni chiave è un ID risorsa identità assegnata dall'utente e il valore di ogni chiave è un dizionario vuoto. Vedere la documentazione del modello

Proprietà

Nome Descrizione valore
encryptionSettings Impostazioni di crittografia per il file system. Vedere Impostazioni di crittografia
filesystemSubnet Subnet usata dal file system. stringa (obbligatorio)
Hsm Impostazioni del contenitore di Archiviazione BLOB per il file system. Vedere Impostazioni del modulo di protezione hardware
maintenanceWindow Specifica il giorno e l'ora in cui possono verificarsi gli aggiornamenti del sistema. Vedere Finestra manutenzione (obbligatorio)
rootSquashSettings Specifica le impostazioni di squash radice per il file system. Vedi Impostazioni di squash radice
storageCapacityTiB Dimensioni del file system, in TiB. Per altre informazioni sui valori consentiti per questo campo in base allo SKU, vedere Scegliere il tipo e le dimensioni del file system. int (obbligatorio)

Impostazioni di crittografia

Nome Descrizione valore
keyEncryptionKey Specifica il percorso della chiave di crittografia in Key Vault. Vedere la documentazione del modello

Impostazioni del modulo di protezione hardware

Nome Descrizione valore
container ID risorsa del contenitore di archiviazione usato per idratare lo spazio dei nomi e l'archiviazione dallo spazio dei nomi. Il provider di risorse deve disporre dell'autorizzazione per creare token di firma di accesso condiviso nell'account di archiviazione. stringa (obbligatorio)
importPrefix Solo i BLOB nel contenitore non di registrazione che iniziano con questo percorso/prefisso vengono importati nello spazio dei nomi del cluster. Questa operazione viene usata solo durante la creazione iniziale del file system lustre gestito di Azure. string
importPrefixesInitial Solo i BLOB nel contenitore non di registrazione che iniziano con uno dei percorsi/prefissi in questa matrice vengono importati nello spazio dei nomi del cluster. Questo valore viene usato solo durante la creazione iniziale del file system lustre gestito di Azure e ha "/" come valore predefinito. string[]
loggingContainer ID risorsa del contenitore di archiviazione usato per registrare eventi ed errori. Deve essere un contenitore separato nello stesso account di archiviazione dell'idratazione e del contenitore di archiviazione. Il provider di risorse deve disporre dell'autorizzazione per creare token di firma di accesso condiviso nell'account di archiviazione. stringa (obbligatorio)

Nota

La importPrefixesInitial proprietà consente di specificare più prefissi per l'importazione di dati nel file system, mentre importPrefix consente di specificare un singolo prefisso. Il valore predefinito per entrambe le proprietà è /. Se si definisce una delle proprietà, non è possibile definire l'altra. Se si definiscono entrambe le proprietà, la distribuzione ha esito negativo.

Per altre informazioni, vedere Importare il prefisso.

Finestra di manutenzione

Nome Descrizione valore
dayOfWeek Giorno della settimana in cui può verificarsi la finestra di manutenzione. Sunday, Monday, Tuesday, WednesdayThursday, , FridaySaturday
timeOfDayUTC L'ora del giorno (in formato UTC) può verificarsi la finestra di manutenzione. Esempio stringa
: 22:30

La timeOfDayUTC proprietà utilizza un formato di orologio di 24 ore. Ad esempio, 22:30 rappresenta le 10:30 PM. Il modello è ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$.

Impostazioni di squash radice

Nome Descrizione valore
mode Modalità squash del file system AML. 'All': gli ID utente e gruppo nei file vengono inseriti nei valori forniti per tutti gli utenti in sistemi non attendibili. 'RootOnly': gli ID utente e gruppo nei file vengono compressi in base ai valori forniti esclusivamente per l'utente radice in sistemi non attendibili. 'Nessuno': nessuna modifica degli ID utente e gruppo viene eseguita per tutti gli utenti di qualsiasi sistema. All, None, RootOnly
noSquashNidLists Elenco di indirizzi IP NID separati da punto e virgola da aggiungere a TrustedSystems. string
squashGID ID gruppo a cui eseguire lo squash. int
squashUID ID utente a cui eseguire lo squash. int

Nome SKU

Nome Descrizione Valore
name Nome SKU per la risorsa. AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250AMLFS-Durable-Premium-500

Distribuire il file system usando il modello

I passaggi di esempio seguenti 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. I passaggi presuppongono che sia già stato scelto un tipo e dimensioni del file system e che sia stato creato un file modello, come descritto in precedenza in questo articolo. Assicurarsi anche di soddisfare tutti i prerequisiti.

  1. Impostare la sottoscrizione predefinita:

    az account set --subscription "<subscription-id>"
    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 <rg-name> --location <region-short-name>
    

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

  3. Distribuire il file system lustre gestito di Azure usando il modello . La sintassi dipende dal fatto che si usino file JSON o Bicep, insieme al numero di file.

    È 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 del modello di Resource Manager.

    Comando JSON di esempio:

    az deployment group create \
      --name <example-deployment> \
      --resource-group <resource-group-name> \
      --template-file azlustre-template.json
    

    Comando Bicep di esempio:

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

Esempio di JSON

Questa sezione mostra il contenuto di esempio per un file modello JSON. È possibile rimuovere i parametri facoltativi durante la creazione di un modello di Resource Manager personalizzato.

{
    "$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/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>"
                  }
                }
              },
              "filesystemSubnet": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
              "hsm": {
                "settings": {
                  "container": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>",
                  "loggingContainer": "/subscriptions/00000000-0000-0000-0000-000000000000/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": {}
}

Esempio bicep

Questa sezione mostra il contenuto di esempio per un file Bicep. È possibile rimuovere i parametri facoltativi durante la creazione di parametri personalizzati.

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/00000000-0000-0000-0000-000000000000/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/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>'
        }
      }
    }
    filesystemSubnet: '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>'
    hsm: {
      settings: {
        container: '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>'
        importPrefixesInitial: [
          '/'
        ]
        loggingContainer: '/subscriptions/00000000-0000-0000-0000-000000000000/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'
  ]
}