Terraform - пропустить создание ресурса «storage_data_disk» Azure, если определенное значение равно false - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть следующий код в модуле для создания виртуальных машин:

## Create VMs
resource "azurerm_virtual_machine" "vm" {
  count               =  var.is_windows_vm == "yes" ? var.instance_numbers : 0
  name                  = "${var.team_name}_${var.env_name}_${var.release}_${count.index}"
  location              = var.loc
  resource_group_name   = "${var.team_name}_${var.env_name}_${var.release}"
  network_interface_ids = [element(azurerm_network_interface.net_int.*.id, count.index)]
  vm_size               = var.vm_size

## Delete OS and data disks when VMs are deleted
  delete_os_disk_on_termination = true
  delete_data_disks_on_termination = true

## What OS to use
storage_image_reference {
  publisher = var.storage_image_publisher
  offer     = var.storage_image_offer
  sku       = var.storage_image_sku
  version   = var.storage_image_version
}

## Create OS disk for VM
storage_os_disk {
  name              = "osdisk${count.index}"
  caching           = "ReadWrite"
  create_option     = "FromImage"
  managed_disk_type = var.disk_type
  os_type           = var.os_type
}

## Create data disk for VM
storage_data_disk {
   name              = "datadisk_${count.index}"
   managed_disk_type = var.disk_type
   create_option     = "Empty"
   lun               = 0
   disk_size_gb      = var.disk_size_gb
 }

## VM profile
os_profile {
   computer_name  = "${var.team_name}-${var.env_name}-${var.release}-${count.index}"
   admin_username = var.vm_username
   admin_password = var.vm_password
 }

 os_profile_windows_config {
   enable_automatic_upgrades = false
 }

Я хотел бы пропустить создание storage_os_disk, если для переменной задано значение false, поэтому модуль можно использовать для виртуальных машин. это не требует дополнительного диска.

Это может быть что-то вроде этого:

variable "additional_data_disk" {
    description = "Specify if an additional Data Disks should be created for each VM"
    default = false
}

## Create data disk for VM
dynamic "storage_data_disk" {
for_each = var.additional_data_disk ? ["data"] : []
content {
  name = "datadisk_${count.index}"
  managed_disk_type = var.disk_type
  create_option = "Empty"
  lun = 0
  disk_size_gb = var.disk_size_gb
  caching = "ReadWrite"
  }
}

Но я не смог заставить его работать. План Terraform по-прежнему показывает создаваемый диск с данными.

...