Azure Resource Manager 템플릿을 사용하여 Azure Managed Lustre 파일 시스템 만들기
ARM(Azure Resource Manager) 템플릿을 사용하여 Azure Managed Lustre 파일 시스템 만들기를 자동화할 수 있습니다. 이 문서에서는 기본 절차를 설명하고 필요한 파일의 예를 제공합니다.
이 문서에서는 ARM 템플릿을 만들기 위한 두 가지 방법의 예를 제공합니다.
- 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 스토리지당 처리량 | 스토리지 최솟값 | 스토리지 최댓값 | ID 증가값 |
---|---|---|---|---|
AMLFS-Durable-Premium-40 | 40MBps | 48TB | 768TB | 48TB |
AMLFS-Durable-Premium-125 | 125MBps | 16TB | 128TB | 16TB |
AMLFS-Durable-Premium-250 | 250MBps | 8 TB | 128TB | 8 TB |
AMLFS-Durable-Premium-500 | 500MBps | 4 TB | 128TB | 4 TB |
나열된 최대값보다 큰 스토리지 값이 필요한 경우 지원 티켓을 열어 옵션을 탐색할 수 있습니다.
SKU 기능을 확인하려면 Azure Portal을 사용하여 관리되는 Lustre 파일 시스템을 만드는 워크플로를 사용할 수 있습니다. SKU 관련 설정은 파일 시스템 세부 정보 아래의 기본 사항 탭에 있습니다.
템플릿 파일 만들기
구성 옵션을 결정한 후 템플릿 파일을 만들 수 있습니다. 템플릿 파일은 Azure Managed Lustre 파일 시스템에 대한 구성 세부 정보를 포함하는 JSON 또는 Bicep 파일입니다.
템플릿 속성 값
ARM 템플릿을 사용하여 Azure Managed Lustre 파일 시스템을 만들려면 템플릿 파일에 다음 정보를 포함해야 합니다. 정확한 구문은 Bicep과 JSON 간에 다르므로 리터럴 값에 대한 예제를 참조하세요.
파일 시스템
ID
속성 | 설명 | 값 |
---|---|---|
type | 리소스에 사용되는 ID의 형식입니다. | None , UserAssigned |
userAssignedIdentities | 각 키가 사용자 할당 ID 리소스 ID이고 각 키의 값이 빈 사전인 사전입니다. | 템플릿 문서 참조 |
속성
이름 | 설명 | 값 |
---|---|---|
encryptionSettings | 파일 시스템의 암호화 설정입니다. | 암호화 설정 참조 |
filesystemSubnet | 파일 시스템에서 사용하는 서브넷입니다. | string(필수) |
hsm | 파일 시스템에 대한 Blob Storage 컨테이너 설정입니다. | HSM 설정 참조 |
maintenanceWindow | 시스템 업데이트가 발생할 수 있는 날짜 및 시간을 지정합니다. | 유지 관리 기간(필수) 참조 |
rootSquashSettings | 파일 시스템에 대한 루트 스쿼시 설정을 지정합니다. | 루트 스쿼시 설정 참조 |
storageCapacityTiB | 파일 시스템의 크기(TiB)입니다. SKU에 따라 이 필드에 허용되는 값에 대한 자세한 내용은 파일 시스템 유형 및 크기 선택을 참조하세요. | int(필수) |
암호화 설정
속성 | 설명 | 값 |
---|---|---|
keyEncryptionKey | Key Vault에서 암호화 키의 위치를 지정합니다. | 템플릿 문서 참조 |
HSM 설정
속성 | 설명 | 값 |
---|---|---|
컨테이너 | 네임스페이스를 하이드링하고 네임스페이스에서 보관하는 데 사용되는 스토리지 컨테이너의 리소스 ID입니다. 리소스 공급자는 스토리지 계정에 SAS 토큰을 만들 수 있는 권한이 있어야 합니다. | string(필수) |
importPrefix | 이 경로/접두사로 시작하는 비 로깅 컨테이너의 Blob만 클러스터 네임스페이스로 가져옵니다. 이는 Azure Managed Lustre 파일 시스템을 처음 만드는 동안에만 사용됩니다. | string |
importPrefixesInitial | 이 배열의 경로/접두사 중 하나로 시작하는 로깅이 아닌 컨테이너의 Blob만 클러스터 네임스페이스로 가져옵니다. 이 값은 Azure Managed Lustre 파일 시스템을 처음 만드는 동안에만 사용되며 기본값으로 '/'가 있습니다. | string[] |
loggingContainer | 이벤트 및 오류를 로깅하는 데 사용되는 스토리지 컨테이너의 리소스 ID입니다. 하이드레이션 및 보관 컨테이너와 동일한 스토리지 계정의 별도 컨테이너여야 합니다. 리소스 공급자는 스토리지 계정에 SAS 토큰을 만들 수 있는 권한이 있어야 합니다. | string(필수) |
참고 항목
이 importPrefixesInitial
속성을 사용하면 데이터를 파일 시스템으로 가져오기 위한 여러 접두사를 지정할 수 있지만 importPrefix
, 단일 접두사를 지정할 수 있습니다. 두 속성의 기본값은 .입니다 /
. 속성 중 하나를 정의하는 경우 다른 속성을 정의할 수 없습니다. 두 속성을 모두 정의하면 배포가 실패합니다.
자세한 내용은 가져오기 접두사를 참조 하세요.
유지 관리 기간
속성 | 설명 | 값 |
---|---|---|
dayOfWeek | 유지 관리 기간이 발생할 수 있는 요일입니다. | Sunday , Monday , Tuesday , Wednesday , Thursday , Friday Saturday |
timeOfDayUTC | 유지 관리 기간이 발생할 수 있는 시간(UTC)입니다. | 문자열 예제: 22:30 |
이 속성은 timeOfDayUTC
24시간 클록 형식을 사용합니다. 예를 들어 22:30
오후 10시 30분입니다. 패턴은 .입니다 ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
.
루트 Squash 설정
속성 | 설명 | 값 |
---|---|---|
mode | AML 파일 시스템의 Squash 모드입니다. 'All': 파일의 사용자 및 그룹 ID는 신뢰할 수 없는 시스템의 모든 사용자에 대해 제공된 값으로 찌그러집니다. 'RootOnly': 파일의 사용자 및 그룹 ID는 신뢰할 수 없는 시스템의 루트 사용자만을 위해 제공된 값으로 찌그러집니다. '없음': 모든 시스템의 모든 사용자에 대해 사용자 및 그룹 ID의 스쿼시가 수행되지 않습니다. | All , , None RootOnly |
noSquashNidLists | TrustedSystems에 추가할 세미콜론으로 구분된 NID IP 주소 목록입니다. | string |
squashGID | 스쿼시할 그룹 ID입니다. | int |
squashUID | 스쿼시할 사용자 ID입니다. | int |
SKU name
속성 | 설명 | 값 |
---|---|---|
name | 리소스의 SKU 이름입니다. | AMLFS-Durable-Premium-40 , AMLFS-Durable-Premium-125 , AMLFS-Durable-Premium-250 AMLFS-Durable-Premium-500 |
템플릿을 사용하여 파일 시스템 배포
다음 예제 단계에서는 Azure CLI 명령을 사용하여 새 리소스 그룹을 만들고 Azure Managed Lustre 파일 시스템을 만듭니다. 이 단계에서는 이 문서의 앞부분에서 설명한 대로 파일 시스템 형식 및 크기를 이미 선택하고 템플릿 파일을 만들었다고 가정합니다. 또한 모든 필수 구성 요소를 충족하는지 확인합니다.
기본 구독을 설정합니다.
az account set --subscription "<subscription-id>" az account show
필요에 따라 Azure Managed Lustre 파일 시스템에 대한 새 리소스 그룹을 만듭니다. 기존 리소스 그룹을 사용하려면 이 단계를 건너뛰고 템플릿 명령을 실행할 때 기존 리소스 그룹의 이름을 제공합니다.
az group create --name <rg-name> --location <region-short-name>
파일 시스템은 동일한 구독에 있는 한 자체 리소스 그룹 외부에서 리소스를 사용할 수 있습니다.
템플릿을 사용하여 Azure Managed Lustre 파일 시스템을 배포합니다. 구문은 파일 수와 함께 JSON 또는 Bicep 파일을 사용하는지 여부에 따라 달라집니다.
Bicep 및 JSON 템플릿을 모두 단일 파일 또는 여러 파일로 배포할 수 있습니다. 자세한 내용과 각 옵션에 대한 정확한 구문을 보려면 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>"
}
}
},
"filesystemSubnet": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
"hsm": {
"settings": {
"container": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>",
"loggingContainer": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.KeyVault/vaults/<keyvault-name>'
}
}
}
filesystemSubnet: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>'
hsm: {
settings: {
container: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rg-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/blobServices/default/containers/<container-name>'
importPrefixesInitial: [
'/'
]
loggingContainer: '/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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'
]
}