Partilhar 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 Azure Resource Manager (ARM). Este artigo explica o procedimento básico e dá exemplos dos ficheiros de que necessita.

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

  • Use JSON para criar modelos ARM diretamente. Para saber mais, consulte Sintaxe do modelo JSON.
  • Use o Bicep, que usa sintaxe mais simples para fornecer os detalhes de configuração. Quando você implanta o modelo, os arquivos Bicep são convertidos em arquivos de modelo 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 seu sistema de arquivos do Azure Managed Lustre. Para saber mais sobre as opções de configuração, consulte os detalhes da instalação em Criar um sistema de arquivos do Azure Managed Lustre.

Ao usar um modelo, especifique uma 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 suportada de armazenamento 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 suportada. Esses SKUs criam um sistema de arquivos que usa armazenamento SSD durável.

SKU Taxa de transferência por armazenamento TiB 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 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 do 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 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 para seu sistema de arquivos do Azure Managed Lustre.

Valores de propriedade de modelo

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

Sistema de ficheiros

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
nome Um nome exclusivo para o sistema de arquivos do Azure Managed Lustre. string (obrigatório)
localização A geolocalização onde o recurso vive. Use o nome curto em vez do nome para exibição, por exemplo, use eastus em vez de East US. string (obrigatório)
etiquetas Tags de recursos para o sistema de arquivos. Dicionário de nomes e valores de tags; ver Tags em modelos
sku SKU de desempenho para o recurso. Ver nome da SKU
de identidade A identidade gerenciada a ser usada para o sistema de arquivos, se configurada. Ver Identidade
propriedades Propriedades para o sistema de arquivos. Ver Imóveis
Zonas Zonas de disponibilidade de 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 onde cada chave é um ID de recurso de identidade atribuído ao usuário e o valor de cada chave é um dicionário vazio. Ver documentos de modelo

Propriedades

Nome Descrição valor
criptografiaConfigurações As configurações de criptografia para o sistema de arquivos. Consulte Configurações de criptografia
filesystemSubnet A sub-rede que o sistema de arquivos usa. string (obrigatório)
HSM As configurações do contêiner Armazenamento de Blob 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 a janela Manutenção (obrigatório)
rootSquashSettings Especifica as configurações de squash raiz para o sistema de arquivos. Consulte Configurações de squash raiz
armazenamentoCapacidadeTiB O tamanho do sistema de arquivos, em TiB. Para saber mais sobre os valores permitidos para este campo com base na SKU, consulte Escolher tipo e 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 Cofre da Chave. Ver documentos de modelo

Configurações do HSM

Nome Descrição valor
contentor ID de recurso do contêiner de armazenamento usado para hidratar o namespace e arquivar a partir do namespace. O provedor de recursos deve ter permissão para criar tokens SAS na conta de armazenamento. string (obrigatório)
importPrefix Somente blobs no contêiner sem registro em 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 Azure Managed Lustre. string
importPrefixesInitial Somente blobs no contêiner sem registro em 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 recipiente separado na mesma conta de armazenamento que o recipiente de hidratação e arquivo. O provedor de recursos deve ter permissão para criar tokens SAS na conta de armazenamento. string (obrigatório)

Nota

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 Importar prefixo.

Janela de manutenção

Nome Descrição valor
diadesemana 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) a janela de manutenção pode ocorrer. string
Exemplo: 22:30

A timeOfDayUTC propriedade usa 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
modo Modo Squash do sistema de arquivos AML. 'Todos': IDs de usuário e grupo em arquivos são esmagados para os valores fornecidos para todos os usuários em sistemas não confiáveis. 'RootOnly': IDs de usuário e grupo em arquivos são esmagados para valores fornecidos apenas para o usuário root em sistemas não confiáveis. 'Nenhum': Nenhuma eliminação de IDs de Usuário e Grupo é realizada para quaisquer usuários em qualquer sistema. All, None, RootOnly
noSquashNidListas Lista de endereços IP NID separados por ponto-e-vírgula a serem adicionados aos TrustedSystems. string
squashGID ID de grupo para esmagar. número inteiro
squashUID ID de usuário para esmagar. número inteiro

Nome da SKU

Nome Descrição Valor
nome Nome da 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 que cumpre 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 seu sistema de arquivos 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 template.

    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 múltiplos. Para obter mais informações e ver a sintaxe exata para cada opção, consulte a documentação do modelo 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 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 o seu próprio.

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