Прежде всего, вы можете создать виртуальную машину Azure из пользовательского образа через Terraform, независимо от того, как вы создаете образ, упаковщик или каким-либо другим способом, подробнее см. Чтобы предоставить пользовательское изображение в Terraform ,
Но когда вы используете пользовательский образ и хотите зашифровать диск с данными, проблема наступает.
Шифрование диска в настоящее время не поддерживается при использовании пользовательских образов Linux.
Подробнее см. Требования и ограничения шифрования .
Кроме того, для подключения диска с данными к виртуальной машине, я думаю, вы можете использовать расширение виртуальной машины для достижения этой цели.И подключив диск с управляемыми данными к виртуальной машине, вы можете просто добавить блок storage_data_disk
в конфигурацию виртуальной машины кода Terraform следующим образом:
resource "azurerm_virtual_machine" "main" {
name = "${var.prefix}-vm"
location = "${azurerm_resource_group.main.location}"
resource_group_name = "${azurerm_resource_group.main.name}"
network_interface_ids = ["${azurerm_network_interface.main.id}"]
vm_size = "Standard_DS1_v2"
# Uncomment this line to delete the OS disk automatically when deleting the VM
# delete_os_disk_on_termination = true
# Uncomment this line to delete the data disks automatically when deleting the VM
# delete_data_disks_on_termination = true
...
storage_data_disk {
name = "datadisk0"
vhd_uri = "${azurestack_storage_account.test.primary_blob_endpoint}${azurestack_storage_container.test.name}/datadisk0.vhd"
disk_size_gb = "1023"
create_option = "Empty"
lun = 0
}
...
tags {
environment = "staging"
}
}
EDIT
Боюсь, вам нужно использовать собственный идентификатор изображения в vm storage_image_reference.Вы можете использовать данные azurerm_image для ссылки на ваше собственное изображение в вашей группе.Код такой:
data "azurerm_image" "custom" {
name = "your_custom_image_name"
resource_group_name = "your_group"
}
resource "azurerm_virtual_machine" "main" {
...
storage_image_reference {
id = "${data.azurerm_image.custom.id}"
}
...
}