Share via


Create um sistema de arquivos Lustre Gerenciado do Azure usando modelos de Resource Manager do Azure

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

Para obter mais informações sobre os modelos, consulte Modelos de Resource Manager do Azure.

Este artigo fornece exemplos de dois métodos diferentes para criar modelos de Resource Manager do Azure:

  • Use o JSON para criar modelos de Resource Manager do Azure diretamente. Confira Sintaxe de modelo JSON.
  • Use o Bicep, que usa uma 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 de Resource Manager do Azure. Consulte a documentação do Bicep.

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

Escolher 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 Lustre Gerenciado do Azure. Para saber mais sobre as opções de configuração, consulte os detalhes de instalação em Create um sistema de arquivos lustre gerenciado do Azure.

Ao usar um modelo, especifique um nome de SKU para definir o tipo básico do sistema Lustre Gerenciado do Azure a ser criado. Se você usar o portal do Azure para criar o Lustre Gerenciado do Azure, especifique o tipo de sistema indiretamente selecionando seus recursos.

No Azure, o termo SKU define um conjunto de recursos para o recurso que está sendo criado. Para um sistema de arquivos lustre gerenciado do Azure, o SKU define as qualidades do sistema, como o tipo de discos usados, a quantidade de armazenamento com suporte e a capacidade máxima de taxa de transferência.

Atualmente, há suporte para os seguintes SKUs:

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

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

SKU Taxa de transferência por armazenamento tiB Mínimo de armazenamento Armazenamento Máximo1 Incremento
AMLFS-Durable-Premium-40 40 MB/segundo 48 TB 768 TB 48 TB
AMLFS-Durable-Premium-125 125 MB/segundo 16 TB 128 TB 16 TB
AMLFS-Durable-Premium-250 250 MB/segundo 8 TB 128 TB 8 TB
AMLFS-Durable-Premium-500 500 MB/segundo 4 TB 128 TB 4 TB

1 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.

Você pode usar o fluxo de trabalho de criação em portal do Azure para marcar recursos de SKU. As configurações específicas do SKU estão na guia Básico em Detalhes do sistema de arquivos.

Dica

Confira Informações necessárias para um comando que você pode usar para marcar os nomes de SKU disponíveis.

Create um arquivo de modelo

Depois de decidir sobre as opções de configuração, você poderá 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 lustre gerenciado do Azure. Esta seção explica as informações obrigatórias e opcionais a serem incluídas no arquivo de modelo.

Para obter arquivos de exemplo que contêm todas as opções de configuração possíveis, consulte Arquivos JSON de exemplo e Arquivo Bicep de exemplo.

Informações necessárias

Esta seção explica as informações que você precisa incluir em seus arquivos de modelo do Azure Resource Manager para criar um sistema de arquivos lustre gerenciado do Azure. A sintaxe exata é diferente entre Bicep e JSON, portanto, consulte os exemplos de cada tipo de linguagem para obter os valores literais.

  • Tipo de recurso a ser criado – esse valor informa ao Azure Resource Manager que você está criando um sistema de arquivos lustre gerenciado do Azure passando uma combinação do valor Microsoft.StorageCache/amlFileSystems e da versão da API.

    Há várias maneiras de criar o tipo de recurso:

    • No exemplo JSON deste artigo, o valor do tipo de recurso é passado literalmente no arquivo template.json , mas o valor da versão da API é lido do arquivo parameters.json .
    • No exemplo do Bicep, o tipo de recurso e a versão da API são passados juntos no início do arquivo de modelo.
  • Versão da API – a versão do Lustre Gerenciado do Azure a ser criada.

    Para localizar a versão atual da API:

    az provider show --namespace Microsoft.StorageCache --query "resourceTypes[?resourceType=='amlFilesystems'].apiVersions" --out table
    
  • Nome do SKU – o modelo de desempenho para o sistema de arquivos, seja AMLFS-Durable-Premium-125 ou AMLFS-Durable-Premium-250.

    Use o seguinte comando para localizar SKUs disponíveis (use a versão atual da API):

    az rest --url https://management.azure.com/subscriptions/<subscription_id>/providers/Microsoft.StorageCache/skus/?api-version=<version> | jq '.value[].name' | grep AMLFS| uniq
    
  • Local – o nome da região do Azure em que o sistema de arquivos é criado.

    Para localizar as regiões e zonas de disponibilidade em que o Lustre Gerenciado do Azure tem suporte:

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

    Observação

    Esse comando gera os nomes de exibição das regiões do Azure; você deve usar o valor mais curto name (por exemplo, usar "eastus" em vez de "Leste dos EUA").

    Esse comando retorna o nome curto do nome de exibição. Oeste dos EUA é um exemplo; este comando retorna westus:

    az account list-locations --query "[?displayName=='West US'].name" --output tsv
    
  • Zona de disponibilidade – a zona de disponibilidade a ser usada na região do Azure.

    Use o comando anterior em Local para localizar zonas de disponibilidade. Especifique uma única zona de disponibilidade para o sistema.

  • Nome do sistema de arquivos – o nome visível pelo usuário para esse sistema de arquivos do Lustre Gerenciado do Azure.

  • Sub-rede do sistema de arquivos – a sub-rede que o sistema de arquivos usa. Forneça o URI da sub-rede; por exemplo, /subscriptions/<SubscriptionID>/resourceGroups/<VnetResourceGroupName>/providers/Microsoft.Network/virtualNetworks/<VnetName>/subnets/<SubnetName>.

  • Capacidade de armazenamento – o tamanho do cluster do Lustre Gerenciado do Azure, no TiB. Os valores dependem do SKU. Para obter mais informações, consulte Escolher o tipo e o tamanho do sistema de arquivos.

  • Período de manutenção – requer dois valores que definem o período de manutenção. Esses valores definem um período semanal de 30 minutos durante o qual as atualizações do sistema podem ser feitas.

    • Dia da semana (por exemplo, Sunday)
    • Hora do dia (UTC) (por exemplo, 22:00)

Informações opcionais

Os parâmetros nesta seção são opcionais ou necessários somente se você estiver usando recursos específicos.

  • Marcas – use essa opção se quiser definir marcas de metadados de recurso do Azure.

  • Configurações de integração de blobs – forneça esses valores para usar um contêiner de Armazenamento de Blobs integrado com esse sistema de arquivos. Para obter mais informações, consulte Integração de blobs.

    • Contêiner – a ID do recurso do contêiner de blob a ser usado para o HSM (gerenciamento de armazenamento hierárquico) do Lustre.
    • Contêiner de registro em log – a ID do recurso de um contêiner separado para manter os logs de importação e exportação. O contêiner de log deve estar na mesma conta de armazenamento que o contêiner de dados.
    • Prefixo de importação (opcional) – se esse valor for fornecido, somente os blobs que começam com a cadeia de caracteres de prefixo de importação serão importados para o Sistema de Arquivos Lustre Gerenciado do Azure. Se você não for fornecê-lo, o valor padrão será /, que especifica que todos os blobs no contêiner serão importados.
  • Configurações de chave gerenciada pelo cliente – forneça esses valores se quiser usar um Key Vault do Azure para controlar as chaves de criptografia usadas para criptografar seus dados no sistema Lustre Gerenciado do Azure. Por padrão, os dados são criptografados usando chaves de criptografia gerenciadas pela Microsoft.

    • Tipo de identidade – defina isso como UserAssigned para ativar as chaves gerenciadas pelo cliente.
    • Criptografia Key Vault – a ID do recurso do Key Vault do Azure que armazena as chaves de criptografia.
    • URL da chave de criptografia – o identificador da chave a ser usada para criptografar seus dados.
    • Identidade gerenciada – uma identidade gerenciada atribuída pelo usuário que o sistema de arquivos lustre gerenciado do Azure usa para acessar o Key Vault do Azure. Para obter mais informações, consulte Usar chaves de criptografia gerenciadas pelo cliente.

Implantar o sistema de arquivos usando o modelo

Estas etapas de exemplo usam comandos da CLI do Azure para criar um novo grupo de recursos e criar um sistema de arquivos lustre gerenciado do Azure nele.

Antes de implantar, conclua as seguintes etapas:

Siga estas etapas para implantar o sistema de arquivos usando o modelo:

  1. Defina sua assinatura padrão:

    az account set --subscription "<SubscriptionID>"
    az account show
    
  2. Opcionalmente, crie um novo grupo de recursos para o sistema de arquivos lustre gerenciado do Azure. 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 <ResourceGroupName> --location <RegionShortname>
    

    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 lustre gerenciado do Azure usando o modelo . A sintaxe é diferente dependendo se você está usando arquivos JSON ou Bicep e o número de arquivos usados.

    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 modelos do Azure Resource Manager.

    Exemplo de comando JSON:

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

    Comando Bicep de exemplo:

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

Arquivos JSON de exemplo

Esta seção mostra o conteúdo de exemplo para um arquivo de modelo e um arquivo de parâmetros separado. Esses arquivos contêm todas as opções de configuração possíveis. Você pode remover parâmetros opcionais ao criar seu próprio modelo de Resource Manager do Azure.

Arquivo de modelo

Esta seção mostra o conteúdo de exemplo de um arquivo de modelo:

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

Arquivo de parâmetros

Esta seção mostra o conteúdo de exemplo de um arquivo de parâmetros:

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

Arquivo Bicep de exemplo

Este exemplo inclui todos os valores possíveis em um modelo do Lustre Gerenciado do Azure. Ao criar seu modelo, remova os valores opcionais que você não deseja.

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

Próximas etapas