【发布时间】:2019-09-22 22:01:12
【问题描述】:
我编写了一个脚本来使用 terraform 创建 Azure VM。脚本可以灵活地将操作系统作为输入。现在 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 {
}
}
我试图在这里找到一种使用条件的方法,以根据作为输入提供的操作系统版本使用相应的配置属性。
【问题讨论】:
-
您可能需要拥有 2 个几乎相同的资源并根据操作系统调整整个资源。我并不是说它是唯一的方法,但它很可能会起作用
-
哪个 terraform 版本? 0.12 之前还是之后?
-
Giulio Vian,我使用的是 pre-0.12 版本,
标签: terraform terraform-provider-azure