Как использовать условные атрибуты в Terraform - PullRequest
0 голосов
/ 04 мая 2019

Я написал скрипт для создания виртуальной машины Azure с помощью terraform.Скрипт является гибким, чтобы принять ОС в качестве входных данных.Теперь в блоке ресурсов azurerm_virtual_machine есть некоторые атрибуты, характерные для ОС.Как использовать условие, например, если в Windows используется os_profile_windows_config{} или в ОС Linux используется os_profile_linux_config{}.

Обычные условные операторы не работали, так как эти атрибуты не принимают никаких значений напрямую с помощью =.

resource "azurerm_virtual_machine" "vmdeploy" {
  count = "${var.count_of_VMs}"
  name = "${var.vm_name}-${count.index}"
  resource_group_name = "${azurerm_resource_group.deployrg.name}"
  availability_set_id = "${azurerm_availability_set.avset.id}"
  location = "${azurerm_resource_group.deployrg.location}"
  network_interface_ids = ["${element(azurerm_network_interface.nic.*.id, count.index)}"]
  vm_size = "Standard_DS1_v2"

  storage_image_reference{
    publisher = "${var.OS_Image_Publisher}"
    offer = "${var.OS_Image_Offer}"
    sku = "${var.OS_Image_Sku}"
    version = "latest"
  }
  storage_os_disk{
    name = "${var.vm_name}-${count.index}-osdisk"
    caching = "ReadWrite"
    managed_disk_type = "Standard_LRS"
    create_option = "FromImage"
  }

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

  os_profile {
    computer_name = "${var.vm_name}-${count.index}"
    admin_username = "XXXXXXXXXXXX"
    admin_password = "XXXXXXXXXXXX"
  }

  os_profile_windows_config {

  }
}

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

...