Почему я не могу создавать виртуальные машины Azure с помощью Terraform Smoothly

Примерно через 17 минут я получил сообщение об ошибке из командной строки. И кажется, что это слишком долго для исполнения? или это ожидаемая продолжительность?

azurerm_virtual_machine.vm: все еще создается ... (прошло 17 мин. 30 сек.) Снятие блокировки состояния. Это может занять некоторое время ...

Ошибка: ошибка при применении плана:

Произошла 1 ошибка (и):

  • azurerm_virtual_machine.vm: 1 ошибка (и):

  • azurerm_virtual_machine.vm: неожиданный EOF

Terraform не выполняет автоматический откат при возникновении ошибок. Вместо этого ваш файл состояния Terraform был частично обновлен всеми успешно завершенными ресурсами. Устраните ошибку, указанную выше, и примените еще раз, чтобы постепенно изменить свою инфраструктуру.

После проверки внутри портала он по-прежнему показывает статус «Создание ...». Я использовал ниже .tf файл. Какие-нибудь проблемы?

provider "azurerm" {}

variable "location" {
  default = "East US"
}

variable "username" {
  default = "..."
}

variable "password" {
  default = "..."
}

resource "azurerm_resource_group" "resourceGroup" {
  name     = "TerraformResearchResourceGroup"
  location = "${var.location}"
}

resource "azurerm_public_ip" "publicip" {
  name                         = "terraformresearchpublicip"
  location                     = "${var.location}"
  resource_group_name          = "${azurerm_resource_group.resourceGroup.name}"
  public_ip_address_allocation = "Dynamic"
  idle_timeout_in_minutes      = 30

  tags {
    environment = "test"
  }
}

resource "azurerm_virtual_network" "vnet" {
  name                = "terraformresearchnetwork"
  address_space       = ["10.0.0.0/16"]
  location            = "${var.location}"
  resource_group_name = "${azurerm_resource_group.resourceGroup.name}"
}

resource "azurerm_subnet" "subnet" {
  name                 = "terraformresearchsubnet"
  resource_group_name  = "${azurerm_resource_group.resourceGroup.name}"
  virtual_network_name = "${azurerm_virtual_network.vnet.name}"
  address_prefix       = "10.0.2.0/24"
}

resource "azurerm_network_interface" "nic" {
  name                = "terraformresearchnic"
  location            = "${var.location}"
  resource_group_name = "${azurerm_resource_group.resourceGroup.name}"

  ip_configuration {
    name                          = "terraformresearchconfiguration"
    subnet_id                     = "${azurerm_subnet.subnet.id}"
    private_ip_address_allocation = "dynamic"
    public_ip_address_id          = "${azurerm_public_ip.publicip.id}"
  }
}

resource "azurerm_storage_account" "storageacc" {
  name                     = "terraformresearchstoacc"
  resource_group_name      = "${azurerm_resource_group.resourceGroup.name}"
  location                 = "${var.location}"
  account_tier             = "Standard"
  account_replication_type = "GRS"
}

resource "azurerm_storage_container" "storagecont" {
  name                  = "terraformresearchstoragecont"
  resource_group_name   = "${azurerm_resource_group.resourceGroup.name}"
  storage_account_name  = "${azurerm_storage_account.storageacc.name}"
  container_access_type = "private"
}

resource "azurerm_managed_disk" "datadisk" {
  name                 = "terraformresearchdatadisk"
  location             = "${var.location}"
  resource_group_name  = "${azurerm_resource_group.resourceGroup.name}"
  storage_account_type = "Standard_LRS"
  create_option        = "Empty"
  disk_size_gb         = "1023"
}

resource "azurerm_virtual_machine" "vm" {
  name                  = "terraformrvm"
  location              = "${var.location}"
  resource_group_name   = "${azurerm_resource_group.resourceGroup.name}"
  network_interface_ids = ["${azurerm_network_interface.nic.id}"]
  vm_size               = "Standard_A0"

  storage_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2016-Datacenter"
    version   = "latest"
  }

  storage_os_disk {
    name              = "terraformresearhosdisk"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }

  storage_data_disk {
    name            = "${azurerm_managed_disk.datadisk.name}"
    managed_disk_id = "${azurerm_managed_disk.datadisk.id}"
    create_option   = "Attach"
    lun             = 1
    disk_size_gb    = "${azurerm_managed_disk.datadisk.disk_size_gb}"
  }

  os_profile {
    computer_name  = "terraformrvm"
    admin_username = "${var.username}"
    admin_password = "${var.password}"
  }

  os_profile_windows_config {
    enable_automatic_upgrades = false
    provision_vm_agent = true
  }
}


person Jaish Mathews    schedule 09.07.2018    source источник


Ответы (1)


Что касается вашей проблемы, я беру тест, и в вашем .tf файле нужно что-то изменить.

Во-первых, имя учетной записи хранения должно быть меньше или равно 20 длинам.

Во-вторых, размер вашей виртуальной машины слишком мал, поэтому создание виртуальной машины займет много времени. Если вы измените размер на больший, то время сократится.

Последнее, что нужно указать в переменных - имя пользователя и пароль. Я думаю, ты это знаешь.

person Charles Xu    schedule 10.07.2018
comment
Спасибо за ответ. Имя учетной записи хранения допускает длину до 24. Я постараюсь увеличить размер виртуальной машины завтра и дам вам знать. Есть ли причина, по которой виртуальная машина большего размера создается за меньшее время? У вас какой-либо предпочтительный размер, чем vm_size = Standard_A0, для этой цели тестирования? - person Jaish Mathews; 10.07.2018
comment
В моем тесте размер Standard_A0 занимает около сорока минут, а затем время ожидания. Затем я тестирую размер Standard_A2, это занимает около 8 минут. Поэтому я предлагаю вам использовать такой размер, например Standard_A2 или Standard_B2s. А почему небольшие размеры занимают гораздо больше времени? Как я думаю, что-то внутри требует использования большего количества ЦП или памяти. И как мой тест с вашим .tf файлом, я получил, что имя учетной записи хранилища ошибок не может превышать 20 длин, возможно, есть что-то другое. - person Charles Xu; 11.07.2018
comment
Я могу подтвердить такое поведение. Для меня размер A2 занял всего 5 минут. - person Jaish Mathews; 11.07.2018
comment
Я рада, что это вам помогло! :-) - person Charles Xu; 11.07.2018