Compartilhar via


Criar um sistema de arquivos do Azure Managed Lustre usando modelos do Azure Resource Manager

Você pode automatizar a criação de um sistema de arquivos do Azure Managed Lustre usando modelos do ARM (Azure Resource Manager). Este artigo explica o procedimento básico e fornece exemplos dos arquivos necessários.

Este artigo fornece exemplos de dois métodos diferentes para criar modelos do ARM:

  • Use JSON para criar modelos do ARM diretamente. Para saber mais, consulte Sintaxe do modelo JSON.
  • Use o Bicep, que usa uma sintaxe mais simples para fornecer os detalhes da configuração. Quando você implanta o modelo, os arquivos Bicep são convertidos em arquivos de modelo do ARM. Para saber mais, consulte a documentação do Bicep.

Para saber mais sobre essas opções, consulte Comparando JSON e Bicep para modelos.

Escolha o tipo e o tamanho do sistema de arquivos

Antes de escrever um modelo, você deve tomar algumas decisões sobre o sistema de arquivos do Azure Managed Lustre. Para saber mais sobre as opções de configuração, consulte os detalhes de configuração em Criar um sistema de arquivos do Azure Managed Lustre.

Ao usar um modelo, especifique um SKU para definir o tipo básico de sistema de arquivos do Azure Managed Lustre a ser criado. O SKU representa uma camada de produto. Ele define as qualidades do sistema, como o tipo de discos, a quantidade de armazenamento com suporte e a capacidade máxima de taxa de transferência. Se você usar o portal do Azure para criar seu sistema de arquivos do Azure Managed Lustre, especifique o tipo de sistema indiretamente selecionando seus recursos.

A tabela a seguir mostra os valores de taxa de transferência e tamanho de armazenamento em cada SKU com suporte. Esses SKUs criam um sistema de arquivos que usa armazenamento SSD durável.

SKU Taxa de transferência por TiB de armazenamento Armazenamento mínimo Armazenamento máximo Incremento
AMLFS-Durável-Premium-40 40 MBps 48 TB 768 TB 48 TB
AMLFS-Durável-Premium-125 Até 125 MBps 16 TB 128 TB 16 TB
AMLFS-Durável-Premium-250 250 MBps 8 TB 128 TB 8 TB
AMLFS-Durável-Premium-500 500 MBps 4 TB 128 TB 4 TB

Se você precisar de valores de armazenamento maiores que o máximo listado, poderá abrir um tíquete de suporte para explorar as opções.

Para verificar os recursos de SKU, você pode usar o fluxo de trabalho para criar um sistema de arquivos do Managed Lustre usando o portal do Azure. As configurações específicas de SKU estão na guia Noções básicas em Detalhes do sistema de arquivos.

Criar um arquivo de modelo

Depois de decidir sobre as opções de configuração, você pode criar um arquivo de modelo. O arquivo de modelo é um arquivo JSON ou Bicep que contém os detalhes de configuração do sistema de arquivos do Azure Managed Lustre.

Valores de propriedade do modelo

Para criar um sistema de arquivos do Azure Managed Lustre usando um modelo do ARM, você precisa incluir as informações a seguir em seu arquivo de modelo. A sintaxe exata é diferente entre Bicep e JSON, portanto, consulte os exemplos para obter os valores literais.

Sistema de arquivos

Nome Descrição Valor
tipo O tipo de recurso a ser criado. Microsoft.StorageCache/amlFileSystems
apiVersion A versão da API do Azure Managed Lustre a ser usada. Use a versão atual da API, por exemplo, 2024-03-01
name Um nome exclusivo para o sistema de arquivos do Azure Managed Lustre. string (obrigatório)
local A localização geográfica onde o recurso reside. Use o nome curto em vez do nome de exibição, por exemplo, use eastus em vez de East US. string (obrigatório)
marcas Marcas de recursos para o sistema de arquivos. Dicionário de nomes e valores de tags; veja Tags em modelos
sku SKU de desempenho para o recurso. Veja o nome do SKU
identity A identidade gerenciada a ser usada para o sistema de arquivos, se configurada. Veja Identidade
properties Propriedades do sistema de arquivos. Ver Propriedades
zonas Zonas de disponibilidade para recursos. Este campo deve conter apenas um único elemento na matriz. string[]

Identidade

Nome Descrição Valor
tipo O tipo de identidade usado para o recurso. None, UserAssigned
userAssignedIdentities Um dicionário em que cada chave é uma ID de recurso de identidade atribuída pelo usuário e o valor de cada chave é um dicionário vazio. Veja os documentos do modelo

Propriedades

Nome Descrição Valor
encryptionSettings As configurações de criptografia para o sistema de arquivos. Consulte Configurações de criptografia
sistema de arquivosSub-rede A sub-rede que o sistema de arquivos usa. string (obrigatório)
Hsm As configurações do contêiner do Armazenamento de Blobs para o sistema de arquivos. Consulte as configurações do HSM
manutençãoJanela Especifica o dia e a hora em que as atualizações do sistema podem ocorrer. Consulte Janela de manutenção (obrigatório)
rootSquashSettings Especifica as configurações de squash raiz para o sistema de arquivos. Consulte Configurações de squash raiz
storageCapacityTiB O tamanho do sistema de arquivos, em TiB. Para saber mais sobre os valores permitidos para esse campo com base no SKU, consulte Escolher o tipo e o tamanho do sistema de arquivos. int (obrigatório)

Configurações de criptografia

Nome Descrição Valor
chaveEncryptionKey Especifica o local da chave de criptografia no Key Vault. Veja os documentos do modelo

Configurações do HSM

Nome Descrição Valor
contêiner ID do recurso do contêiner de armazenamento usado para hidratar o namespace e arquivar do namespace. O provedor de recursos deve ter permissão para criar tokens SAS na conta de armazenamento. string (obrigatório)
importPrefixo Somente blobs no contêiner que não é de log que começam com esse caminho/prefixo são importados para o namespace do cluster. Isso só é usado durante a criação inicial do sistema de arquivos do Azure Managed Lustre. string
importPrefixesInicial Somente blobs no contêiner sem log que começam com um dos caminhos/prefixos nessa matriz são importados para o namespace do cluster. Esse valor só é usado durante a criação inicial do sistema de arquivos do Azure Managed Lustre e tem '/' como o valor padrão. string[]
loggingContainer ID do recurso do contêiner de armazenamento usado para registrar eventos e erros. Deve ser um contêiner separado na mesma conta de armazenamento que o contêiner de hidratação e arquivamento. O provedor de recursos deve ter permissão para criar tokens SAS na conta de armazenamento. string (obrigatório)

Observação

A importPrefixesInitial propriedade permite especificar vários prefixos para importar dados para o sistema de arquivos, enquanto importPrefix permite especificar um único prefixo. O valor padrão para ambas as propriedades é /. Se você definir uma das propriedades, não poderá definir a outra. Se você definir ambas as propriedades, a implantação falhará.

Para saber mais, consulte Prefixo de importação.

Janela de manutenção

Nome Descrição Valor
dayOfWeek Dia da semana em que a janela de manutenção pode ocorrer. Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, , Saturday
timeOfDayUTC A hora do dia (em UTC) em que a janela de manutenção pode ocorrer. Exemplo de cadeia de caracteres
: 22:30

A timeOfDayUTC propriedade utiliza um formato de relógio de 24 horas. Por exemplo, 22:30 representa 22h30. O padrão é ^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$.

Configurações de squash raiz

Nome Descrição Valor
mode Modo de squash do sistema de arquivos AML. 'Todos': os IDs de usuário e grupo em arquivos são combinados com os valores fornecidos para todos os usuários em sistemas não confiáveis. 'RootOnly': as IDs de usuário e grupo em arquivos são combinadas com valores fornecidos apenas para o usuário raiz em sistemas não confiáveis. 'Nenhum': nenhuma combinação de IDs de usuário e grupo é executada para nenhum usuário em nenhum sistema. All, None, RootOnly
noSquashNidLists Lista de endereços IP NID separada por ponto-e-vírgula a ser adicionada ao TrustedSystems. string
de abóboraGID ID do grupo para esmagar. int
squashUID ID do usuário para comprimir. int

Nome do SKU

Nome Descrição Valor
name Nome do SKU para o recurso. AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500

Implantar o sistema de arquivos usando o modelo

As etapas de exemplo a seguir usam comandos da CLI do Azure para criar um novo grupo de recursos e criar um sistema de arquivos do Azure Managed Lustre nele. As etapas pressupõem que você já escolheu um tipo e tamanho de sistema de arquivos e criou um arquivo de modelo, conforme descrito anteriormente neste artigo. Certifique-se também de atender a todos os pré-requisitos.

  1. Defina sua assinatura padrão:

    az account set --subscription "<subscription-id>"
    az account show
    
  2. Opcionalmente, crie um novo grupo de recursos para o sistema de arquivos do Azure Managed Lustre. Se você quiser usar um grupo de recursos existente, ignore esta etapa e forneça o nome do grupo de recursos existente ao executar o comando de modelo.

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

    Seu sistema de arquivos pode usar recursos fora de seu próprio grupo de recursos, desde que estejam na mesma assinatura.

  3. Implante o sistema de arquivos do Azure Managed Lustre usando o modelo. A sintaxe depende se você está usando arquivos JSON ou Bicep, juntamente com o número de arquivos.

    Você pode implantar modelos Bicep e JSON como arquivos únicos ou vários arquivos. Para obter mais informações e ver a sintaxe exata de cada opção, consulte a documentação do modelo do ARM.

    Exemplo de comando JSON:

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

    Exemplo de comando Bicep:

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

Exemplo de JSON

Esta seção mostra o conteúdo de exemplo de um arquivo de modelo JSON. Você pode remover parâmetros opcionais ao criar seu próprio modelo do 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": {}
}

Exemplo de bíceps

Esta seção mostra o conteúdo de exemplo de um arquivo Bicep. Você pode remover parâmetros opcionais ao criar seus próprios.

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