Twórca zarządzanego systemu plików Lustre platformy Azure przy użyciu szablonów usługi Azure Resource Manager

Tworzenie systemu plików Azure Managed Lustre można zautomatyzować przy użyciu szablonów usługi Azure Resource Manager. W tym artykule wyjaśniono podstawową procedurę i przedstawiono przykłady potrzebnych plików.

Aby uzyskać więcej informacji na temat szablonów, zobacz Szablony usługi Azure Resource Manager.

W tym artykule przedstawiono przykłady dwóch różnych metod tworzenia szablonów usługi Azure Resource Manager:

  • Użyj kodu JSON, aby bezpośrednio utworzyć szablony usługi Azure Resource Manager. Zobacz Składnia szablonu JSON.
  • Użyj Bicep, który używa prostszej składni do podawania szczegółów konfiguracji. Podczas wdrażania szablonu pliki Bicep są konwertowane na pliki szablonów usługi Azure Resource Manager. Zapoznaj się z dokumentacją Bicep.

Aby dowiedzieć się więcej o opcjach, zobacz Porównanie plików JSON i Bicep dla szablonów.

Wybieranie typu i rozmiaru systemu plików

Przed napisaniem szablonu należy podjąć pewne decyzje dotyczące zarządzanego systemu plików Lustre platformy Azure. Aby dowiedzieć się więcej o opcjach konfiguracji, zobacz szczegóły konfiguracji w Twórca zarządzanym przez platformę Azure systemie plików Lustre.

W przypadku korzystania z szablonu określ nazwę jednostki SKU , aby zdefiniować podstawowy typ systemu Azure Managed Lustre do utworzenia. Jeśli użyjesz Azure Portal do utworzenia zarządzanego lustra platformy Azure, określ typ systemu pośrednio, wybierając jego możliwości.

Na platformie Azure termin SKU definiuje zestaw funkcji tworzonych zasobów. W przypadku systemu plików Azure Managed Lustre jednostka SKU ustawia cechy systemowe, takie jak typ używanych dysków, ilość obsługiwanego magazynu i maksymalna pojemność przepływności.

Obecnie obsługiwane są następujące jednostki SKU:

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

Te jednostki SKU tworzą system plików korzystający z trwałego magazynu SSD. W poniższej tabeli przedstawiono wartości przepływności i rozmiaru magazynu dla każdej jednostki SKU:

SKU Przepływność na magazyn TiB Minimalna ilość miejsca do magazynowania Maksymalny rozmiar magazynu1 Przyrost
AMLFS-Durable-Premium-40 40 MB/s 48 TB 768 TB 48 TB
AMLFS-Durable-Premium-125 125 MB/s 16 TB 128 TB 16 TB
AMLFS-Durable-Premium-250 250 MB/s 8 TB 128 TB 8 TB
AMLFS-Durable-Premium-500 500 MB/s 4 TB 128 TB 4 TB

1 Jeśli potrzebujesz wartości magazynu większych niż wartość maksymalna na liście, możesz otworzyć bilet pomocy technicznej , aby zapoznać się z opcjami.

Aby sprawdzić możliwości jednostki SKU, możesz użyć przepływu pracy tworzenia w Azure Portal. Ustawienia specyficzne dla jednostki SKU znajdują się na karcie Podstawy w obszarze Szczegóły systemu plików.

Porada

Zobacz Wymagane informacje dotyczące polecenia, którego można użyć do sprawdzenia dostępnych nazw jednostek SKU.

Twórca pliku szablonu

Po podjęciu decyzji o opcjach konfiguracji możesz utworzyć plik szablonu. Plik szablonu jest plikiem JSON lub Bicep zawierającym szczegóły konfiguracji systemu plików Azure Managed Lustre. W tej sekcji opisano wymagane i opcjonalne informacje do uwzględnienia w pliku szablonu.

Przykładowe pliki zawierające wszystkie możliwe opcje konfiguracji można znaleźć w temacie Sample JSON files (Przykładowe pliki JSON ) i Sample Bicep file (Przykładowy plik Bicep).

Wymagane informacje

W tej sekcji opisano informacje, które należy uwzględnić w plikach szablonów usługi Azure Resource Manager w celu utworzenia systemu plików Azure Managed Lustre. Dokładna składnia różni się między wartościami Bicep i JSON, dlatego zapoznaj się z przykładami dla każdego typu języka dla wartości literału.

  • Typ zasobu do utworzenia — ta wartość informuje usługę Azure Resource Manager, że tworzysz system plików Azure Managed Lustre, przekazując kombinację wartości Microsoft.StorageCache/amlFileSystems i wersji interfejsu API.

    Istnieje kilka sposobów tworzenia typu zasobu:

    • W przykładzie JSON tego artykułu wartość typu zasobu jest przekazywana dosłownie w pliku template.json , ale wartość wersji interfejsu API jest odczytywana z pliku parameters.json .
    • W przykładzie Bicep typ zasobu i wersja interfejsu API są przekazywane razem na początku pliku szablonu.
  • Wersja interfejsu API — wersja rozwiązania Azure Managed Lustre do utworzenia.

    Aby znaleźć bieżącą wersję interfejsu API:

    az provider show --namespace Microsoft.StorageCache --query "resourceTypes[?resourceType=='amlFilesystems'].apiVersions" --out table
    
  • Nazwa jednostki SKU — model wydajności systemu plików lub AMLFS-Durable-Premium-125AMLFS-Durable-Premium-250.

    Użyj następującego polecenia, aby znaleźć dostępne jednostki SKU (użyj bieżącej wersji interfejsu API):

    az rest --url https://management.azure.com/subscriptions/<subscription_id>/providers/Microsoft.StorageCache/skus/?api-version=<version> | jq '.value[].name' | grep AMLFS| uniq
    
  • Location — nazwa regionu świadczenia usługi Azure, w którym jest tworzony system plików.

    Aby znaleźć regiony i strefy dostępności, w których jest obsługiwana usługa Azure Managed Lustre:

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

    Uwaga

    To polecenie zwraca nazwy wyświetlane regionów platformy Azure; Należy użyć krótszej name wartości (na przykład użyj wartości "eastus" zamiast "Wschodnie stany USA").

    To polecenie zwraca krótką nazwę z nazwy wyświetlanej. Przykład: Zachodnie stany USA; to polecenie zwraca polecenie westus:

    az account list-locations --query "[?displayName=='West US'].name" --output tsv
    
  • Strefa dostępności — strefa dostępności do użycia w regionie świadczenia usługi Azure.

    Użyj poprzedniego polecenia w obszarze Lokalizacja , aby znaleźć strefy dostępności. Określ pojedynczą strefę dostępności dla systemu.

  • Nazwa systemu plików — nazwa widoczna dla użytkownika dla tego zarządzanego systemu plików Lustre platformy Azure.

  • Podsieć systemu plików — podsieć używana przez system plików. Podaj identyfikator URI podsieci; na przykład /subscriptions/<SubscriptionID>/resourceGroups/<VnetResourceGroupName>/providers/Microsoft.Network/virtualNetworks/<VnetName>/subnets/<SubnetName>.

  • Pojemność magazynu — rozmiar klastra Azure Managed Lustre w tiB. Wartości zależą od jednostki SKU. Aby uzyskać więcej informacji, zobacz Wybieranie typu i rozmiaru systemu plików.

  • Okres konserwacji — wymaga dwóch wartości, które ustawiają okres konserwacji. Te wartości definiują 30-minutowy okres tygodniowy, w którym można wykonywać aktualizacje systemu.

    • Dzień tygodnia (na przykład Sunday)
    • Godzina dnia (UTC) (na przykład 22:00)

Informacje opcjonalne

Parametry w tej sekcji są opcjonalne lub wymagane tylko wtedy, gdy używasz określonych funkcji.

  • Tagi — użyj tej opcji, jeśli chcesz ustawić tagi metadanych zasobów platformy Azure.

  • Ustawienia integracji obiektów blob — te wartości należy podać, aby użyć zintegrowanego kontenera usługi Blob Storage z tym systemem plików. Aby uzyskać więcej informacji, zobacz Integracja obiektów blob.

    • Container — identyfikator zasobu kontenera obiektów blob do użycia na potrzeby zarządzania hierarchicznym magazynem (HSM, Hierarchical Storage Management).
    • Kontener rejestrowania — identyfikator zasobu oddzielnego kontenera do przechowywania dzienników importu i eksportu. Kontener rejestrowania musi znajdować się na tym samym koncie magazynu co kontener danych.
    • Import prefiks (opcjonalnie) — jeśli ta wartość jest podana, do systemu plików Azure Managed Lustre są importowane tylko obiekty blob rozpoczynające się od ciągu prefiksu importu. Jeśli go nie podasz, wartość domyślna to /, która określa, że wszystkie obiekty blob w kontenerze są importowane.
  • Ustawienia klucza zarządzanego przez klienta — podaj te wartości, jeśli chcesz użyć usługi Azure Key Vault do kontrolowania kluczy szyfrowania używanych do szyfrowania danych w systemie Azure Managed Lustre. Domyślnie dane są szyfrowane przy użyciu kluczy szyfrowania zarządzanych przez firmę Microsoft.

    • Typ tożsamości — ustaw tę opcję, aby UserAssigned włączyć klucze zarządzane przez klienta.
    • Key Vault szyfrowania — identyfikator zasobu usługi Azure Key Vault, który przechowuje klucze szyfrowania.
    • Adres URL klucza szyfrowania — identyfikator klucza do użycia do szyfrowania danych.
    • Tożsamość zarządzana — tożsamość zarządzana przypisana przez użytkownika używana przez system plików Azure Managed Lustre w celu uzyskania dostępu do usługi Azure Key Vault. Aby uzyskać więcej informacji, zobacz Używanie kluczy szyfrowania zarządzanych przez klienta.

Wdrażanie systemu plików przy użyciu szablonu

W tych przykładowych krokach użyto poleceń interfejsu wiersza polecenia platformy Azure, aby utworzyć nową grupę zasobów i utworzyć w niej system plików Azure Managed Lustre.

Przed wdrożeniem upewnij się, że wykonasz następujące kroki:

Wykonaj następujące kroki, aby wdrożyć system plików przy użyciu szablonu:

  1. Ustaw subskrypcję domyślną:

    az account set --subscription "<SubscriptionID>"
    az account show
    
  2. Opcjonalnie utwórz nową grupę zasobów dla systemu plików Azure Managed Lustre. Jeśli chcesz użyć istniejącej grupy zasobów, pomiń ten krok i podaj nazwę istniejącej grupy zasobów podczas wykonywania polecenia szablonu.

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

    System plików może używać zasobów spoza własnej grupy zasobów, o ile znajdują się one w tej samej subskrypcji.

  3. Wdróż system plików Azure Managed Lustre przy użyciu szablonu. Składnia różni się w zależności od tego, czy używasz plików JSON, czy Bicep oraz liczby używanych plików.

    Szablony Bicep i JSON można wdrożyć jako pojedyncze pliki lub wiele plików. Aby uzyskać więcej informacji i wyświetlić dokładną składnię dla każdej opcji, zobacz dokumentację szablonów usługi Azure Resource Manager.

    Przykładowe polecenie JSON:

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

    Przykładowe polecenie Bicep:

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

Przykładowe pliki JSON

W tej sekcji przedstawiono przykładową zawartość pliku szablonu i oddzielny plik parametrów. Te pliki zawierają wszystkie możliwe opcje konfiguracji. Parametry opcjonalne można usunąć podczas tworzenia własnego szablonu usługi Azure Resource Manager.

Plik szablonu

W tej sekcji przedstawiono przykładową zawartość pliku szablonu:

{
    "$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": {}
}

Plik parametrów

W tej sekcji przedstawiono przykładową zawartość pliku parametrów:

{
    "$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>"
        }
    }
}

Przykładowy plik Bicep

Ten przykład zawiera wszystkie możliwe wartości w szablonie Azure Managed Lustre. Podczas tworzenia szablonu usuń wszystkie opcjonalne wartości, ale nie chcesz.

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

Następne kroki