Azure Resource Manager テンプレートを使用して Azure Managed Lustre ファイル システムを作成する

Azure Managed Lustre ファイル システムの作成は、 Azure Resource Manager (ARM) テンプレートを使用して自動化できます。 この記事では、基本的な手順について説明し、必要なファイルの例を示します。

この記事では、ARM テンプレートを作成するための 2 つの異なる方法の例を示します。

  • JSON を使用して ARM テンプレートを直接作成します。 詳細については、 JSON テンプレートの構文を参照してください。
  • Bicep を使用します。この構文では、より単純な構文を使用して構成の詳細を指定します。 テンプレートをデプロイすると、Bicep ファイルが ARM テンプレート ファイルに変換されます。 詳細については、 Bicep のドキュメントを参照してください。

これらのオプションの詳細については、「 テンプレートの JSON と Bicep の比較」を参照してください

ファイル システムの種類とサイズを選択する

テンプレートを作成する前に、Azure Managed Lustre ファイル システムについていくつかの決定を行う必要があります。 構成オプションの詳細については、「 Azure Managed Lustre ファイル システムの作成」のセットアップの詳細を参照してください

テンプレートを使用する場合は、作成する Azure Managed Lustre ファイル システムの基本的な種類を定義する SKU を指定します。 SKU は製品レベルを表します。 ディスクの種類、サポートされているストレージの量、最大スループット容量などのシステム品質を設定します。 Azure portal を使用して Azure Managed Lustre ファイル システムを作成する場合は、その機能を選択して、システムの種類を間接的に指定します。

次の表に、サポートされている各 SKU のスループットとストレージ サイズの値を示します。 これらの SKU は、永続 SSD ストレージを使用するファイル システムを作成します。

SKU TiB ストレージあたりのスループット 最小ストレージ 最大ストレージ 増分
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

一覧の最大値を超えるストレージ値が必要な場合は、サポート チケットを開オプションを調べることができます。

SKU の機能を確認するには、Azure portal を使用してマネージド Lustre ファイル システムを作成するための ワークフロー。 SKU 固有の設定は、 Basics タブの File システムの詳細にあります。

テンプレート ファイルを作成する

構成オプションを決定したら、テンプレート ファイルを作成できます。 テンプレート ファイルは、Azure Managed Lustre ファイル システムの構成の詳細を含む JSON または Bicep ファイルです。

テンプレート プロパティの値

ARM テンプレートを使用して Azure Managed Lustre ファイル システムを作成するには、テンプレート ファイルに次の情報を含める必要があります。 正確な構文は Bicep と JSON で異なるので、リテラル値の例を参照してください。

ファイル システム

名前 Description
type 作成するリソースの種類。 Microsoft.StorageCache/amlFileSystems
apiVersion 使用する Azure Managed Lustre API のバージョン。 たとえば、現在の API バージョンを使用します。 2024-03-01
name Azure Managed Lustre ファイル システムの一意の名前。 string (必須)
location リソースが存在する地理的な場所。 たとえば、表示名ではなく短い名前を使用します。たとえば、East USではなくeastusを使用します。 string (必須)
tags ファイル システムのリソース タグ。 タグ名と値のディクショナリ。テンプレートの タグを参照してください
sku リソースのパフォーマンス SKU。 SKU 名を参照してください
ID ファイル システムに使用するマネージド ID (構成されている場合)。 Identity を参照してください
properties ファイル システムのプロパティ。 Properties を参照してください
ゾーン リソースの可用性ゾーン。 このフィールドには、配列内の 1 つの要素のみを含める必要があります。 string[]

ID

名前 Description
type リソースに使用される ID の種類。 None, UserAssigned
userAssignedIdentities 各キーがユーザー割り当て ID リソース ID であり、各キーの値が空のディクショナリであるディクショナリ。 template ドキュメントを参照してください

プロパティ

件名 Description Value
encryptionSettings ファイル システムの暗号化設定。 Encryption の設定を参照してください
filesystemSubnet ファイル システムが使用するサブネット。 string (必須)
hsm ファイル システムの Blob Storage コンテナーの設定。 HSM 設定を参照してください
maintenanceWindow システム更新が発生する可能性のある日時を指定します。 「<Maintenance ウィンドウを参照してください (必須)
rootSquashSettings ファイル システムのルート スカッシュ設定を指定します。 Root スカッシュの設定を参照してください
storageCapacityTiB ファイル システムのサイズ (TiB 単位)。 SKU に基づくこのフィールドの許容値の詳細については、「 ファイル システムの種類とサイズを参照してください。 int (必須)

暗号化の設定

名前 Description Value
keyEncryptionKey Key Vault 内の暗号化キーの場所を指定します。 template ドキュメントを参照してください

HSM の設定

名前 Description Value
container 名前空間のハイドレートと名前空間からのアーカイブに使用されるストレージ コンテナーのリソース ID。 リソース プロバイダーには、ストレージ アカウントに SAS トークンを作成するためのアクセス許可が必要です。 string (必須)
importPrefix このパス/プレフィックスで始まる非ログ コンテナー内の BLOB のみがクラスター名前空間にインポートされます。 これは、Azure Managed Lustre ファイル システムの初期作成時にのみ使用されます。 string
importPrefixesInitial この配列内のいずれかのパス/プレフィックスで始まる非ログ コンテナー内の BLOB のみがクラスター名前空間にインポートされます。 この値は、Azure Managed Lustre ファイル システムの初期作成時にのみ使用され、既定値として '/' が使用されます。 string[]
loggingContainer イベントとエラーのログ記録に使用されるストレージ コンテナーのリソース ID。 ハイドレーション コンテナーとアーカイブ コンテナーと同じストレージ アカウント内の別のコンテナーである必要があります。 リソース プロバイダーには、ストレージ アカウントに SAS トークンを作成するためのアクセス許可が必要です。 string (必須)

Note

importPrefixesInitial プロパティを使用すると、ファイル システムにデータをインポートするための複数のプレフィックスを指定できますが、importPrefixでは 1 つのプレフィックスを指定できます。 両方のプロパティの既定値は /です。 いずれかのプロパティを定義した場合、もう一方を定義することはできません。 両方のプロパティを定義すると、デプロイは失敗します。

詳細については、「 Import prefix」を参照してください。

メンテナンス期間

名前 Description Value
dayOfWeek メンテナンス期間が発生する曜日。 SundayMondayTuesdayWednesdayThursdayFridaySaturday
timeOfDayUTC メンテナンス期間が発生する可能性がある時刻 (UTC)。 string
Example: 22:30

timeOfDayUTCプロパティは、24 時間制の形式を使用します。 たとえば、 22:30 は午後 10 時 30 分を表します。 パターンは ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$

ルート スカッシュの設定

名前 Description Value
mode AML ファイル システムのスカッシュ モード。 'All': ファイル上のユーザー ID とグループ ID は、信頼されていないシステム上のすべてのユーザーに対して指定された値にスカッシュされます。 'RootOnly': ファイル上のユーザー ID とグループ ID は、信頼されていないシステムのルート ユーザーのみに対して指定された値にスカッシュされます。 'None': システム上のユーザーに対してユーザー ID とグループ ID のスカッシュは実行されません。 AllNoneRootOnly
noSquashNidLists TrustedSystems に追加するセミコロンで区切られた NID IP アドレス一覧。 string
squashGID スカッシュするグループ ID。 int
squashUID スカッシュするユーザー ID。 int

SKU 名

名前 Description
name リソースの SKU 名。 AMLFS-Durable-Premium-40AMLFS-Durable-Premium-125AMLFS-Durable-Premium-250AMLFS-Durable-Premium-500

テンプレートを使用してファイル システムをデプロイする

次の手順の例では、Azure CLI コマンドを使用して新しいリソース グループを作成し、その中に Azure Managed Lustre ファイル システムを作成します。 この手順では、この記事で前述したように、既にファイル システムの種類とサイズを テンプレート ファイルを 作成していることを前提としています。 また、すべての 前提条件を満たしていることを確認します。

  1. 既定のサブスクリプションを設定します。

    az account set --subscription "<subscription-id>"
    az account show
    
  2. 必要に応じて、Azure Managed Lustre ファイル システム用の新しいリソース グループを作成します。 既存のリソース グループを使用する場合は、この手順をスキップし、テンプレート コマンドを実行するときに既存のリソース グループの名前を指定します。

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

    ファイル システムは、同じサブスクリプション内にある限り、独自のリソース グループ外のリソースを使用できます。

  3. テンプレートを使用して Azure Managed Lustre ファイル システムをデプロイします。 構文は、JSON ファイルと Bicep ファイルのどちらを使用しているか、およびファイルの数によって異なります。

    Bicep テンプレートと JSON テンプレートの両方を 1 つのファイルまたは複数のファイルとしてデプロイできます。 詳細および各オプションの正確な構文については、 ARM テンプレートのドキュメントを参照してください

    JSON コマンドの例:

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

    Bicep コマンドの例:

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

JSON 例

このセクションでは、JSON テンプレート ファイルのコンテンツの例を示します。 独自の 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": {}
}

Bicep の例

このセクションでは、Bicep ファイルのコンテンツの例を示します。 独自のパラメーターを作成するときに、省略可能なパラメーターを削除できます。

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