Не удалось создать виртуальную машину Azure из виртуального жесткого диска "недопустимая ссылка на ресурс"
Я пытаюсь развернуть виртуальную интеллектуальную зону в Azure через Terraform, но много раз это не удавалось. Также я читаю существующую здесь статью. Не могли бы вы дать мне совет и исправить это? Огромное спасибо.
Вот подробности: Версия Terraform:
tien$ terraform -v
Terraform v0.11.13
+ provider.azurerm v1.27.1
+ provider.random v2.1.2
Какую терраформу я написал:
resource "azurerm_virtual_machine" "vsz_vm" {
name = "vsz.az.example.com"
location = "${var.location}"
resource_group_name = "${azurerm_resource_group.abc.name}"
network_interface_ids = ["${azurerm_network_interface.vsz_nic.id}"]
vm_size = "Standard_D4_v3"
storage_image_reference {
id = "/subscriptions/4389d27e-249a-4f95-8bd6-3486c60945e7/resourceGroups/ABC/providers/Microsoft.Storage/storageAccounts/vszafb3c92c014b61ab/images/vscg-5.1.1.0.598.vhd"
}
storage_os_disk {
name = "vszOsDisk"
managed_disk_type = "Premium_LRS"
create_option = "FromImage"
os_type = "Linux"
}
os_profile {
computer_name = "vsz.az.example.com"
admin_username = "azure"
}
os_profile_linux_config {
disable_password_authentication = true
ssh_keys {
path = "/home/azure/.ssh/authorized_keys"
key_data = "${var.ssh_public_key}"
}
}
tags {
environment = "${var.environment}"
}
}
тогда я запускаю команду terraform
tien$ terraform init --> OK
tien$ terraform plan --> OK
tien$ terraform apply --> ERROR
Какая проблема?
Error: Error applying plan:
1 error(s) occurred:
* module.azure_example_dlc.azurerm_virtual_machine.vsz_vm: 1 error(s) occurred:
* azurerm_virtual_machine.vsz_vm: compute.VirtualMachinesClient#CreateOrUpdate: Failure sending request: StatusCode=400 -- Original Error: Code="BadRequest" Message="Id /subscriptions/4389d27e-249a-4f95-8bd6-3486c60945e7/resourceGroups/ABC/providers/Microsoft.Storage/storageAccounts/vszafb3c92c014b61ab/images/vscg-5.1.1.0.598.vhd is not a valid resource reference."
Файл VHD vscg-5.1.1.0.598.vhd существует в контейнере "images" в учетной записи хранения "vszafb3c92c014b61ab".
Также я создаю управляемый образ перед созданием виртуальной машины из управляемого изображения, как показано ниже:
storage_image_reference {
id = "/subscriptions/4389d27e-249a-4f95-8bd6-3486c60945e7/resourceGroups/ABC/providers/Microsoft.Storage/storageAccounts/vszafb3c92c014b61ab/images/vscg-5.1.1.0.598.vhd"
}
storage_os_disk {
name = "vszOsDisk"
managed_disk_type = "Premium_LRS"
create_option = "FromImage"
os_type = "Linux"
}
1 ответ
Эта проблема была решена. Мой плохой, я выбрал неправильный подход.
- Используется Managed Disk.
- Блок Блоб
Вот что я сделал, чтобы решить:
- Повторно загрузите образ VHD в блок BLOB, чтобы заменить блок BLOB.
- использовать неуправляемый диск. Зачем? мой образ VHD хранится в странице блоба. Затем он поддерживается виртуальным жестким диском виртуальной машины.
Заметка
- Я использовал Azure Storage Explorer, чтобы заменить загрузку VHD-файла. VHD 42 ГБ часто сталкивается с проблемой при загрузке через веб-браузер Azure.
Azure Storage поддерживает три типа больших двоичных объектов:
- Блок BLOB хранит текстовые и двоичные данные объемом до 4,7 ТБ. Блок BLOB-объектов состоит из блоков данных, которыми можно управлять индивидуально.
- Добавить BLOB-объекты сделаны из блоков, таких как блочные объекты, но оптимизированы для операции добавления. Добавить блоб идеально подходят для таких сценариев, как регистрация данных с виртуальной машины.
- Страничный блоб хранит файлы произвольного доступа размером до 8 ТБ. Страничный блоб хранит файлы виртуального жесткого диска (VHD), которые служат дисками для виртуальной машины Azure.
Наконец, это мой код Terraform
resource "azurerm_virtual_machine" "vsz_vm" {
name = "vsz.az.example.com"
location = "${var.location}"
resource_group_name = "${azurerm_resource_group.abc.name}"
network_interface_ids = ["${azurerm_network_interface.vsz_nic.id}"]
vm_size = "Standard_D4_v3"
storage_os_disk {
name = "vszOsDisk"
# source VHD as reference
image_uri = "https://vszafb3.blob.core.windows.net/images/vscg-5.1.1.0.598.vhd"
# destination VHD to create
vhd_uri = "https://vszafb3.blob.core.windows.net/images/vscg-5.1.1.0.601.vhd"
os_type = "Linux"
create_option = "FromImage"
}
os_profile {
computer_name = "vsz.az.example.com"
admin_username = "azure"
}
os_profile_linux_config {
disable_password_authentication = true
ssh_keys {
path = "/home/azure/.ssh/authorized_keys"
key_data = "${var.ssh_public_key}"
}
}
Эта проблема была решена.