Как запустить несколько виртуальных машин одновременно в Azure - PullRequest
0 голосов
/ 12 февраля 2019

Мета-атрибут Terraform count не работает, когда я пытаюсь запустить несколько виртуальных машин Azure, а также нет такой опции, доступной в консоли управления Azure.

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

resource "azurerm_virtual_machine" "main" {
  name                  = "terra-vm"
  location              = "${var.location}"
  count                 = 2
  resource_group_name   = "${var.resourcegpname}"
 network_interface_ids = ["${element(var.netif, count.index)}"]
  vm_size               = "Standard_B1s"

  delete_os_disk_on_termination = true
  delete_data_disks_on_termination = true


  storage_image_reference {
    publisher = "Canonical"
    offer     = "UbuntuServer"
    sku       = "16.04-LTS"
    version   = "latest"
  }
  storage_os_disk {
    name              = "myosdisk1"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Standard_LRS"
  }
  os_profile {
    computer_name  = "hostname"
    admin_username = "testadmin"
    admin_password = "Password1234!"
    custom_data = "sudo apt-get install apache2 -y && sudo systemctl 
start apache2"
  }
  os_profile_linux_config {
    disable_password_authentication = "false"
  }
  tags {
    environment = "staging"
  }
 }

 variable "netif" {
 type = "list"
 }
 variable "resourcegpname" {}
 variable "location" {}

Как и в AWS, я ожидал, что он должен запустить указанное количество виртуальных машин.

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Другой способ исправить это - просто пропустить имя диска с ОС:

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

Это сгенерирует для вас случайные имена.

0 голосов
/ 12 февраля 2019

Я думаю, что он не создает для вас только одну виртуальную машину.Причина в том, что вы просто создаете один диск ОС, а затем виртуальные машины перезаписываются одна за другой с одним диском ОС, и в результате получается только одна виртуальная машина в конце.

Таким образом, вы должны создать другую ОСимя диска с вашей виртуальной машиной, другие ресурсы также должны будут создавать больше, все это зависит от количества вашей виртуальной машины.Вы можете сделать это следующим образом:

resource "azurerm_virtual_machine" "test" {
 count                 = 2
 name                  = "acctvm${count.index}"
 location              = "${azurerm_resource_group.test.location}"
 availability_set_id   = "${azurerm_availability_set.avset.id}"
 resource_group_name   = "${azurerm_resource_group.test.name}"
 network_interface_ids = ["${element(azurerm_network_interface.test.*.id, count.index)}"]
 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_image_reference {
   publisher = "Canonical"
   offer     = "UbuntuServer"
   sku       = "16.04-LTS"
   version   = "latest"
 }

 storage_os_disk {
   name              = "myosdisk${count.index}"   <--here is core in your case
   caching           = "ReadWrite"
   create_option     = "FromImage"
   managed_disk_type = "Standard_LRS"
 }

 # Optional data disks
 storage_data_disk {
   name              = "datadisk_new_${count.index}"
   managed_disk_type = "Standard_LRS"
   create_option     = "Empty"
   lun               = 0
   disk_size_gb      = "1023"
 }

 storage_data_disk {
   name            = "${element(azurerm_managed_disk.test.*.name, count.index)}"
   managed_disk_id = "${element(azurerm_managed_disk.test.*.id, count.index)}"
   create_option   = "Attach"
   lun             = 1
   disk_size_gb    = "${element(azurerm_managed_disk.test.*.disk_size_gb, count.index)}"
 }

 os_profile {
   computer_name  = "hostname"
   admin_username = "testadmin"
   admin_password = "Password1234!"
 }

 os_profile_linux_config {
   disable_password_authentication = false
 }

 tags {
   environment = "staging"
 }
}

Вы можете получить весь шаблон из Создание нескольких виртуальных машин через Terraform .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...