Использование шаблонов управляемых дисков виртуальной машины
В этой статье описываются различия между управляемыми и неуправляемыми дисками при использовании Azure Resource Manager шаблонов для инициализации виртуальных машин в центре Azure Stack. Примеры позволяют преобразовать существующие шаблоны, использующие неуправляемые диски, на управляемые диски.
Форматирование шаблона неуправляемых дисков
Сначала рассмотрим, как развертываются неуправляемые диски. При создании неуправляемых дисков необходима учетная запись хранения для хранения файлов VHD-файлов. Можно создать новую учетную запись хранения или использовать существующую. Создайте новый ресурс учетной записи хранения в блоке ресурсов шаблона, как показано ниже.
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2017-10-01",
"name": "[variables('storageAccountName')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage"
}
В объект виртуальной машины добавьте зависимость от учетной записи хранения, чтобы гарантировать, что она будет создана до виртуальной машины. В разделе storageProfile укажите полный универсальный код ресурса (URI) расположения VHD, который ссылается на учетную запись хранения и требуется для диска ОС и дисков данных. В следующем примере создается один диск ОС из образа и один пустой диск данных с размером 1023 ГБ:
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2017-12-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": {...}
}
}
Формат шаблона с управляемыми дисками
С помощью управляемых дисков Azure диск станет ресурсом верхнего уровня и больше не требует учетной записи хранения, создаваемой пользователем. Управляемые диски впервые появились в 2017-03-30 версии API. В следующих разделах рассматриваются параметры по умолчанию и объясняется, как выполнять дальнейшую настройку дисков.
Параметры управляемого диска по умолчанию
Чтобы создать виртуальную машину с управляемыми дисками, вам больше не нужно создавать ресурс учетной записи хранения. В приведенном ниже примере шаблона есть некоторые отличия от предыдущих примеров неуправляемого диска:
apiVersion— Это версия для типа ресурсов "virtualMachines", которая поддерживает управляемые диски.osDiskиdataDisksбольше не ссылаются на конкретный URI для VHD.- При развертывании без указания дополнительных свойств диск использует тип хранилища в зависимости от размера виртуальной машины. Например, если вы используете размер виртуальной машины, поддерживающий хранилище класса Premium (размеры с именем "s", например Standard_DS2_v2), то по умолчанию будут настроены диски уровня "Премиум". Вы можете изменить это, используя настройку SKU на диске, чтобы указать тип хранилища.
- Если имя для диска не указано, он принимает формат
<VMName>_OsDisk_1_<randomstring>для диска ОС и<VMName>_disk<#>_<randomstring>для каждого диска с данными.- Если виртуальная машина создается из пользовательского образа, то параметры по умолчанию для типа учетной записи хранения и имени диска извлекаются из свойств диска, определенных в ресурсе пользовательского образа. Их можно переопределить, указав для них значения в шаблоне.
- По умолчанию кэширование диска доступно для чтения и записи на диске операционной системы и отсутствует для дисков данных.
- В следующем примере по-прежнему есть зависимость учетной записи хранения, хотя она предназначена только для хранения диагностических данных и не требуется для дискового хранилища:
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2017-12-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": {...}
}
}
Использование ресурса управляемого диска верхнего уровня
В качестве альтернативы указанию конфигурации дисков в объекте виртуальной машины можно создать ресурс диска верхнего уровня и подключить его при создании виртуальной машины. Обязательно используйте 2017-03-30 в качестве disks версии API ресурсов. Например, можно создать дисковый ресурс, как показано ниже, и использовать его в качестве диска данных. В этом примере vmName используется как часть имени диска:
{
"type": "Microsoft.Compute/disks",
"apiVersion": "2017-03-30",
"name": "[concat(variables('vmName'),'-datadisk1')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"properties": {
"creationData": {
"createOption": "Empty"
},
"diskSizeGB": 1023
}
}
Затем в объекте виртуальной машины укажите ссылку на него, чтобы подключить этот объект диска. Указав идентификатор ресурса созданного управляемого диска в свойстве managedDisk, можно подключить этот диск при создании виртуальной машины. Для параметра apiVersion ресурса виртуальной машины задано значение 2017-12-01. Добавляется зависимость от ресурса диска, чтобы обеспечить его успешное создание до создания виртуальной машины:
{
"type": "Microsoft.Compute/virtualMachines",
"apiVersion": "2017-12-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": {...}
}
}
Создание управляемых групп доступности с виртуальными машинами, использующими управляемые диски
Чтобы создать управляемые группы доступности с виртуальными машинами, использующими управляемые диски, добавьте объект sku в ресурс группы доступности и задайте для свойства name значение Aligned. Это свойство гарантирует, что диски каждой виртуальной машины будут достаточно изолированы друг от друга, чтобы избежать образования единых точек отказа. Также обратите внимание, что apiVersion для ресурса группы доступности задано значение 2017-12-01 :
{
"type": "Microsoft.Compute/availabilitySets",
"apiVersion": "2017-12-01",
"location": "[resourceGroup().location]",
"name": "[variables('avSetName')]",
"properties": {
"PlatformUpdateDomainCount": 1,
"PlatformFaultDomainCount": 2
},
"sku": {
"name": "Aligned"
}
}
Дальнейшие действия
- Дополнительные сведения об управляемых дисках см. в разделе Azure Stack "управляемые диски" центра .
- Ознакомьтесь с справочной документацией по шаблонам для ресурсов виртуальной машины в справочнике по шаблонам Microsoft. COMPUTE/virtualMachines.
- Ознакомьтесь с справочной документацией по шаблонам для дисковых ресурсов в справочном документе по шаблонам Microsoft. COMPUTE/Disks .