Назад | Перейти на главную страницу

Не удалось создать виртуальную машину 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 существует в «образах» контейнера в учетной записи хранения «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"
  }

Эта проблема решена. Моя беда, я выбрал неправильный подход.

  • использовал управляемый диск.
  • used Block blob

Вот что я сделал, чтобы решить:

  • Повторно загрузите образ VHD в Page blob, чтобы заменить блочный blob.
  • использовать неуправляемый диск. Зачем? мой образ VHD хранится в Page blob. Затем он поддерживается виртуальным жестким диском виртуальной машины.

Заметка

  • Я использовал обозреватель хранилища Azure для замены для загрузки файла VHD. VHD 42 ГБ часто вызывает проблемы при загрузке через веб-браузер Azure.

Хранилище Azure поддерживает три типа больших двоичных объектов:

  • Блочный BLOB-объект хранит текстовые и двоичные данные размером примерно до 4,7 ТБ. Блочные BLOB-объекты состоят из блоков данных, которыми можно управлять индивидуально.
  • Добавляемые большие двоичные объекты состоят из блоков, подобных блочным, но оптимизированы для операции добавления. Добавление большого двоичного объекта идеально подходит для таких сценариев, как запись данных с виртуальной машины.
  • Страничный BLOB-объект хранит файлы с произвольным доступом размером до 8 ТБ. Страничный BLOB-объект хранит файлы виртуального жесткого диска (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}"
    }
  }

Эта проблема решена.