Créer un système de fichiers Azure Managed Lustre à l’aide de modèles Azure Resource Manager

Vous pouvez automatiser la création d’un système de fichiers Azure Managed Lustre à l’aide de modèles Azure Resource Manager (ARM). Cet article explique la procédure de base et fournit des exemples de fichiers dont vous avez besoin.

Cet article fournit des exemples de deux méthodes différentes pour créer des modèles ARM :

  • Utilisez JSON pour créer des modèles ARM directement. Pour plus d’informations, consultez la syntaxe du modèle JSON.
  • Utilisez Bicep, qui utilise une syntaxe plus simple pour fournir les détails de la configuration. Lorsque vous déployez le modèle, les fichiers Bicep sont convertis en fichiers de modèle ARM. Pour en savoir plus, consultez la documentation Bicep.

Pour en savoir plus sur ces options, consultez Comparaison de JSON et Bicep pour les modèles.

Choisir le type et la taille du système de fichiers

Avant d’écrire un modèle, vous devez prendre certaines décisions concernant votre système de fichiers Azure Managed Lustre. Pour en savoir plus sur les options de configuration, consultez les détails de la configuration dans Créer un système de fichiers Azure Managed Lustre.

Lorsque vous utilisez un modèle, spécifiez une référence SKU pour définir le type de base du système de fichiers Azure Managed Lustre à créer. La référence SKU représente un niveau de produit. Il définit des qualités système telles que le type de disques, la quantité de stockage prise en charge et la capacité de débit maximale. Si vous utilisez le Portail Azure pour créer votre système de fichiers Azure Managed Lustre, vous spécifiez indirectement le type de système en sélectionnant ses fonctionnalités.

Le tableau suivant présente les valeurs de débit et de taille de stockage dans chaque référence SKU prise en charge. Ces références SKU créent un système de fichiers qui utilise un stockage SSD durable.

Référence (SKU) Débit par Tio de stockage Stockage minimal Stockage maximal Incrément
AMLFS-Durable-Premium-40 40 Mbits/s 48 To 768 To 48 To
AMLFS-Durable-Premium-125 125 Mbits/s 16 To 128 To 16 To
AMLFS-Durable-Premium-250 250 Mbits/s 8 To 128 To 8 To
AMLFS-Durable-Premium-500 500 Mo/s 4 To 128 To 4 To

Si vous avez besoin de valeurs de stockage supérieures à la valeur maximale répertoriée, vous pouvez ouvrir un ticket de support pour explorer les options.

Pour vérifier les fonctionnalités de référence SKU, vous pouvez utiliser le flux de travail pour créer un système de fichiers Managed Lustre à l’aide du Portail Azure. Les paramètres spécifiques à la référence SKU se trouvent sous l’onglet Informations de base sous Détails du système de fichiers.

Créer un fichier de modèle

Après avoir choisi les options de configuration, vous pouvez créer un fichier de modèle. Le fichier de modèle est un fichier JSON ou Bicep qui contient les détails de configuration de votre système de fichiers Azure Managed Lustre.

Valeurs de propriété de modèle

Pour créer un système de fichiers Azure Managed Lustre à l’aide d’un modèle ARM, vous devez inclure les informations suivantes dans votre fichier de modèle. La syntaxe exacte est différente entre Bicep et JSON. Consultez les exemples des valeurs littérales.

Système de fichiers

Nom Description active
type Type de ressource à créer. Microsoft.StorageCache/amlFileSystems
apiVersion Version de l’API Azure Managed Lustre à utiliser. Utilisez la version actuelle de l’API, par exemple, 2024-03-01
name Nom unique du système de fichiers Azure Managed Lustre. chaîne (obligatoire)
location Emplacement géographique où réside la ressource. Utilisez le nom court plutôt que le nom d’affichage, par exemple, utilisez eastus plutôt East USque . chaîne (obligatoire)
tags Balises de ressources pour le système de fichiers. Dictionnaire de noms et de valeurs d’étiquettes ; voir Balises dans les modèles
sku Référence SKU de performances pour la ressource. Voir le nom de la référence SKU
identity Identité managée à utiliser pour le système de fichiers, s’il est configuré. Afficher l’identité
properties Propriétés du système de fichiers. Afficher les propriétés
zones Zones de disponibilité pour les ressources. Ce champ ne doit contenir qu’un seul élément dans le tableau. string[]

Identité

Nom Description active
type Type d’identité utilisé pour la ressource. None, UserAssigned
userAssignedIdentities Dictionnaire où chaque clé est un ID de ressource d’identité attribué par l’utilisateur, et la valeur de chaque clé est un dictionnaire vide. Voir la documentation du modèle

Propriétés

Nom Description active
encryptionSettings Paramètres de chiffrement du système de fichiers. Afficher les paramètres de chiffrement
filesystemSubnet Sous-réseau que le système de fichiers utilise. chaîne (obligatoire)
Hsm Paramètres du conteneur Stockage Blob pour le système de fichiers. Voir les paramètres du module HSM
maintenanceWindow Spécifie le jour et l’heure à laquelle les mises à jour système peuvent se produire. Voir la fenêtre Maintenance (obligatoire)
rootSquashSettings Spécifie les paramètres de courge racine pour le système de fichiers. Voir les paramètres de courge racine
storageCapacityTiB Taille du système de fichiers, en Tio. Pour en savoir plus sur les valeurs autorisées pour ce champ en fonction de la référence SKU, consultez Choisir le type et la taille du système de fichiers. int (obligatoire)

Paramètres de chiffrement

Nom Description active
keyEncryptionKey Spécifie l’emplacement de la clé de chiffrement dans Key Vault. Voir la documentation du modèle

Paramètres HSM

Nom Description active
container ID de ressource du conteneur de stockage utilisé pour l’hydratage de l’espace de noms et l’archivage à partir de l’espace de noms. Le fournisseur de ressources doit avoir l’autorisation de créer des jetons SAP sur le compte de stockage. chaîne (obligatoire)
importPrefix Seuls les objets blob du conteneur non journalisation qui commencent par ce chemin/préfixe sont importés dans l’espace de noms du cluster. Cela est utilisé uniquement lors de la création initiale du système de fichiers Azure Managed Lustre. string
importPrefixesInitial Seuls les objets blob du conteneur qui commencent par l’un des chemins/préfixes de ce tableau sont importés dans l’espace de noms du cluster. Cette valeur est utilisée uniquement lors de la création initiale du système de fichiers Azure Managed Lustre et a la valeur par défaut « / ». string[]
loggingContainer ID de ressource du conteneur de stockage utilisé pour la journalisation des événements et des erreurs. Doit être un conteneur distinct dans le même compte de stockage que le conteneur d’hydratation et d’archivage. Le fournisseur de ressources doit avoir l’autorisation de créer des jetons SAP sur le compte de stockage. chaîne (obligatoire)

Remarque

La importPrefixesInitial propriété vous permet de spécifier plusieurs préfixes pour l’importation de données dans le système de fichiers, tout en importPrefix vous permettant de spécifier un préfixe unique. La valeur par défaut pour les deux propriétés est /. Si vous définissez l’une des propriétés, vous ne pouvez pas définir l’autre. Si vous définissez les deux propriétés, le déploiement échoue.

Pour en savoir plus, consultez Importer le préfixe.

Fenêtre de maintenance

Nom Description active
dayOfWeek Jour de la semaine sur laquelle la fenêtre de maintenance peut se produire. Sunday, Monday, , WednesdayTuesday, Thursday, , Friday,Saturday
timeOfDayUTC L’heure du jour (en UTC) de la fenêtre de maintenance peut se produire. exemple de chaîne
: 22:30

La timeOfDayUTC propriété utilise un format d’horloge de 24 heures. Par exemple, 22:30 représente 10h30. Le modèle est ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$.

Paramètres de courge racine

Nom Description active
mode Mode Squash du système de fichiers AML. « Tout » : les ID d’utilisateur et de groupe sur les fichiers sont écrasés sur les valeurs fournies pour tous les utilisateurs sur des systèmes non approuvés. « RootOnly » : les ID d’utilisateur et de groupe sur les fichiers sont écrasés pour fournir des valeurs uniquement à l’utilisateur racine sur des systèmes non approuvés. « Aucun » : aucune suppression des ID d’utilisateur et de groupe n’est effectuée pour tous les utilisateurs sur tous les systèmes. All, , NoneRootOnly
noSquashNidLists Liste d’adresses IP NID séparées par des points-virgules à ajouter aux systèmes de confiance. string
squashGID ID de groupe vers lequel courge. int
squashUID ID d’utilisateur vers qui courge. int

Nom du SKU

Nom Description Valeur
name Nom de la référence SKU pour la ressource. AMLFS-Durable-Premium-40, , AMLFS-Durable-Premium-125AMLFS-Durable-Premium-250, ,AMLFS-Durable-Premium-500

Déployer le système de fichiers à l’aide du modèle

Les exemples d’étapes suivants utilisent des commandes Azure CLI pour créer un groupe de ressources et créer un système de fichiers Azure Managed Lustre dans celui-ci. Les étapes supposent que vous avez déjà choisi un type de système de fichiers et une taille et créé un fichier de modèle, comme décrit précédemment dans cet article. Veillez également à respecter toutes les conditions préalables.

  1. Définissez votre abonnement par défaut :

    az account set --subscription "<subscription-id>"
    az account show
    
  2. Si vous le souhaitez, créez un groupe de ressources pour votre système de fichiers Azure Managed Lustre. Si vous souhaitez utiliser un groupe de ressources existant, ignorez cette étape et indiquez le nom du groupe de ressources existant lorsque vous exécutez la commande de modèle.

    az group create --name <rg-name> --location <region-short-name>
    

    Votre système de fichiers peut utiliser des ressources en dehors de son propre groupe de ressources, tant qu’elles se trouvent dans le même abonnement.

  3. Déployez le système de fichiers Azure Managed Lustre à l’aide du modèle. La syntaxe dépend de l’utilisation de fichiers JSON ou Bicep, ainsi que du nombre de fichiers.

    Vous pouvez déployer des modèles Bicep et JSON en tant que fichiers uniques ou plusieurs fichiers. Pour plus d’informations et pour afficher la syntaxe exacte de chaque option, consultez la documentation du modèle ARM.

    Exemple de commande JSON :

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

    Exemple de commande Bicep :

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

Exemple JSON

Cette section présente des exemples de contenu pour un fichier de modèle JSON. Vous pouvez supprimer des paramètres facultatifs lors de la création de votre propre modèle 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/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": {}
}

Exemple Bicep

Cette section présente des exemples de contenu pour un fichier Bicep. Vous pouvez supprimer des paramètres facultatifs lors de la création de vos propres paramètres.

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