jeudi 17 janvier 2019

Terraform ELSE /IF Conditinal choose resource based on variable value

Based on variable value (true or false) , i create Public IP and assign/remove it to/from network interface

#Create network interface

resource "azurerm_network_interface" "public_ip" {

count = "${var.enable_public_ip ? 1 : 0}"
name =  "Network_Inteface_${var.env_name}_${format("%s",element(var.azure_instance_names, count.index))}"

location = "${azurerm_resource_group.res_group.location}"
resource_group_name = "${azurerm_resource_group.res_group.name}"
#network_security_group_id = "${var.vm_security_group_id}"
ip_configuration {
name = "Server2016"
subnet_id = "${azurerm_subnet.DTAP_WAN.id}"
private_ip_address_allocation = "dynamic"
public_ip_address_id = "${azurerm_public_ip.public_ip.id}"
}

}



resource "azurerm_network_interface" "no_public_ip" {


count = "${var.enable_public_ip ? 0 : 1}"
name =  "Network-Inteface-${var.env_name}-${format("%s",element(var.azure_instance_names, count.index))}"
location = "${azurerm_resource_group.res_group.location}"
resource_group_name = "${azurerm_resource_group.res_group.name}"
#network_security_group_id = "${var.vm_security_group_id}"
ip_configuration {
name = "Server2016"
subnet_id = "${azurerm_subnet.DTAP_WAN.id}"
private_ip_address_allocation = "dynamic"

}

}

How, based on

variable "enable_public_ip" {

default = false

}

variable to chose what network interface to assign to VM

i tried this:

 resource "azurerm_virtual_machine" "seven_disks" {

   count = "${var.second_disk > 0 && var.third_disk > 0 && var.fourth_disk > 0 && var.fifth_disk > 0 && var.sixth_disk > 0 && var.seventh_disk > 0 ? 1 : 0}" 
    .........

   network_interface_ids = ["${var.enable_public_ip ? azurerm_network_interface.public_ip.id : azurerm_network_interface.no_public_ip.id}"]
    ....................
    }

but getting:

Error: Error running plan: 1 error(s) occurred:

  • azurerm_virtual_machine.seven_disks: 1 error(s) occurred:

  • azurerm_virtual_machine.seven_disks: Resource 'azurerm_network_interface.public_ip' not found for variable 'azurerm_network_interface.public_ip.id'

when variable variable "enable_public_ip" is set to false

Aucun commentaire:

Enregistrer un commentaire