Partilhar via


Usando discos em modelos do Azure Resource Manager

Aplica-se a: ✔️ VMs ✔️ Linux VMs ✔️ do Windows Conjuntos ✔️ de escala flexíveis Conjuntos de balanças uniformes

Este documento descreve as diferenças entre discos gerenciados e não gerenciados ao usar modelos do Azure Resource Manager para provisionar máquinas virtuais. Os exemplos ajudam você a atualizar modelos existentes que estão usando discos não gerenciados para discos gerenciados. Para referência, estamos usando o modelo vm-simple-windows como um guia. Você pode ver o modelo usando discos gerenciados e uma versão anterior usando discos não gerenciados se quiser compará-los diretamente.

Formatação do modelo Discos não gerenciados

Para começar, vamos dar uma olhada em como os discos não gerenciados são implantados. Ao criar discos não gerenciados, você precisa de uma conta de armazenamento para armazenar os arquivos VHD. Você pode criar uma nova conta de armazenamento ou usar uma que já existe. Este artigo mostra como criar uma nova conta de armazenamento. Crie um recurso de conta de armazenamento no bloco de recursos, conforme mostrado abaixo.

{
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2018-07-01",
    "name": "[variables('storageAccountName')]",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
}

Dentro do objeto de máquina virtual, adicione uma dependência na conta de armazenamento para garantir que ela seja criada antes da máquina virtual. storageProfile Na seção , especifique o URI completo do local VHD, que faz referência à conta de armazenamento e é necessário para o disco do sistema operacional e quaisquer discos de dados.

{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2018-10-01",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "name": "osdisk",
                "vhd": {
                    "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob, 'vhds/osdisk.vhd')]"
                },
                "caching": "ReadWrite",
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "name": "datadisk1",
                    "diskSizeGB": 1023,
                    "lun": 0,
                    "vhd": {
                        "uri": "[concat(reference(resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))).primaryEndpoints.blob, 'vhds/datadisk1.vhd')]"
                    },
                    "createOption": "Empty"
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

Formatação de modelo de discos gerenciados

Com os Managed Disks do Azure, o disco torna-se um recurso de nível superior e já não requer a criação de uma conta de armazenamento pelo utilizador. Os discos gerenciados foram expostos pela primeira vez na versão da 2016-04-30-preview API, eles estão disponíveis em todas as versões subsequentes da API e agora são o tipo de disco padrão. As seções a seguir percorrem as configurações padrão e detalham como personalizar ainda mais seus discos.

Nota

Recomenda-se usar uma versão da API mais tarde do que 2016-04-30-preview como houve alterações de quebra entre 2016-04-30-preview e 2017-03-30.

Configurações padrão de disco gerenciado

Para criar uma VM com discos gerenciados, não é mais necessário criar o recurso de conta de armazenamento. Fazendo referência ao exemplo de modelo abaixo, há algumas diferenças em relação aos exemplos de disco não gerenciado anteriores a serem observados:

  • A apiVersion é uma versão que suporta discos gerenciados.
  • osDisk e dataDisks não se referem mais a um URI específico para o VHD.
  • Ao implantar sem especificar propriedades adicionais, o disco usará um tipo de armazenamento com base no tamanho da VM. Por exemplo, se você estiver usando um tamanho de VM que ofereça suporte a armazenamento premium (tamanhos com "s" em seu nome, como Standard_D2s_v3), os discos premium serão configurados por padrão. Você pode alterar isso usando a configuração sku do disco para especificar um tipo de armazenamento.
  • Se nenhum nome para o disco for especificado, ele terá o formato de para o disco do sistema operacional e <VMName>_disk<#>_<randomstring> para cada disco de <VMName>_OsDisk_1_<randomstring> dados.
    • Se uma VM estiver sendo criada a partir de uma imagem personalizada, as configurações padrão para o tipo de conta de armazenamento e o nome do disco serão recuperadas das propriedades do disco definidas no recurso de imagem personalizada. Eles podem ser substituídos especificando valores para eles no modelo.
  • Por padrão, a criptografia de disco do Azure está desabilitada.
  • Por padrão, o cache de disco é Leitura/Gravação para o disco do sistema operacional e Nenhum para discos de dados.
  • No exemplo abaixo, ainda há uma dependência de conta de armazenamento, embora isso seja apenas para armazenamento de diagnósticos e não seja necessário para armazenamento em disco.
{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2018-10-01",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "diskSizeGB": 1023,
                    "lun": 0,
                    "createOption": "Empty"
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

Usando um recurso de disco gerenciado de nível superior

Como alternativa para especificar a configuração do disco no objeto de máquina virtual, você pode criar um recurso de disco de nível superior e anexá-lo como parte da criação da máquina virtual. Por exemplo, você pode criar um recurso de disco da seguinte maneira para usar como um disco de dados.

{
    "type": "Microsoft.Compute/disks",
    "apiVersion": "2018-06-01",
    "name": "[concat(variables('vmName'),'-datadisk1')]",
    "location": "[resourceGroup().location]",
    "sku": {
        "name": "Standard_LRS"
    },
    "properties": {
        "creationData": {
            "createOption": "Empty"
        },
        "diskSizeGB": 1023
    }
}

No objeto VM, faça referência ao objeto de disco a ser anexado. Especificar o ID do recurso do disco gerenciado criado na managedDisk propriedade permite o anexo do disco à medida que a VM é criada. O apiVersion para o recurso VM está definido como 2017-03-30. Uma dependência do recurso de disco é adicionada para garantir que ele seja criado com êxito antes da criação da VM.

{
    "type": "Microsoft.Compute/virtualMachines",
    "apiVersion": "2018-10-01",
    "name": "[variables('vmName')]",
    "location": "[resourceGroup().location]",
    "dependsOn": [
        "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
        "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]",
        "[resourceId('Microsoft.Compute/disks/', concat(variables('vmName'),'-datadisk1'))]"
    ],
    "properties": {
        "hardwareProfile": {...},
        "osProfile": {...},
        "storageProfile": {
            "imageReference": {
                "publisher": "MicrosoftWindowsServer",
                "offer": "WindowsServer",
                "sku": "[parameters('windowsOSVersion')]",
                "version": "latest"
            },
            "osDisk": {
                "createOption": "FromImage"
            },
            "dataDisks": [
                {
                    "lun": 0,
                    "name": "[concat(variables('vmName'),'-datadisk1')]",
                    "createOption": "attach",
                    "managedDisk": {
                        "id": "[resourceId('Microsoft.Compute/disks/', concat(variables('vmName'),'-datadisk1'))]"
                    }
                }
            ]
        },
        "networkProfile": {...},
        "diagnosticsProfile": {...}
    }
}

Criar conjuntos de disponibilidade gerenciados com VMs usando discos gerenciados

Para criar conjuntos de disponibilidade gerenciados com VMs usando discos gerenciados, adicione o sku objeto ao recurso do conjunto de disponibilidade e defina a name propriedade como Aligned. Essa propriedade garante que os discos de cada VM estejam suficientemente isolados uns dos outros para evitar pontos únicos de falha. Observe também que o apiVersion recurso para o conjunto de disponibilidade está definido como 2018-10-01.

{
    "type": "Microsoft.Compute/availabilitySets",
    "apiVersion": "2018-10-01",
    "location": "[resourceGroup().location]",
    "name": "[variables('avSetName')]",
    "properties": {
        "PlatformUpdateDomainCount": 3,
        "PlatformFaultDomainCount": 2
    },
    "sku": {
        "name": "Aligned"
    }
}

Discos SSD padrão

Abaixo estão os parâmetros necessários no modelo do Resource Manager para criar discos SSD padrão:

  • apiVersion for Microsoft.Compute deve ser definido como 2018-04-01 (ou posterior)
  • Especifique managedDisk.storageAccountType como StandardSSD_LRS

O exemplo a seguir mostra a seção properties.storageProfile.osDisk para uma VM que usa discos SSD padrão:

"osDisk": {
    "osType": "Windows",
    "name": "myOsDisk",
    "caching": "ReadWrite",
    "createOption": "FromImage",
    "managedDisk": {
        "storageAccountType": "StandardSSD_LRS"
    }
}

Para obter um exemplo de modelo completo de como criar um disco SSD padrão com um modelo, consulte Criar uma VM a partir de uma imagem do Windows com discos de dados SSD padrão.

Cenários e personalizações adicionais

Para encontrar informações completas sobre as especificações da API REST, consulte a documentação Criar uma API REST de disco gerenciado. Você encontrará cenários adicionais, bem como valores padrão e aceitáveis que podem ser enviados à API por meio de implantações de modelo.

Próximos passos

  • Para modelos completos que usam discos gerenciados, visite os seguintes links do Azure Quickstart Repo.
  • Visite o documento Visão Geral dos Discos Gerenciados do Azure para saber mais sobre discos gerenciados.
  • Analise a documentação de referência de modelo para recursos de máquina virtual visitando o documento de referência de modelo Microsoft.Compute/virtualMachines.
  • Consulte a documentação de referência do modelo para recursos de disco visitando o documento de referência do modelo Microsoft.Compute/disks.
  • Para obter informações sobre como usar discos gerenciados em conjuntos de escala de máquina virtual do Azure, visite o documento Usar discos de dados com conjuntos de escala.