I'm looking at using the new conditionals in Terraform v0.11 to basically turn a config block on or off depending on the evnironment.
Here's the block that I'd like to make into a conditional, if, for example I have a variable to turn on for production.
access_logs { bucket = "my-bucket" prefix = "${var.environment_name}-alb" }
I think I have the logic for checking the environment conditional, but I don't know how to stick the above configuration into the logic.
"${var.environment_name == "production" ? 1 : 0 }"
Is it possible to turn the access_logs
block on and off via the environment_name
variable? If this is not possible, is there a workaround?
One way to achieve this with TF 0.12 onwards is to use dynamic blocks:
dynamic "access_logs" { for_each = var.environment_name == "production" ? [var.environment_name] : [] content { bucket = "my-bucket" prefix = "${var.environment_name}-alb" } }
This will create one or zero access_logs blocks depending on the value of var.environment_name.
In the current terraform, the if
statement is only a value and can not be used for the block.
There is a workaround in this case. You can set the enabled
attribute of the access_log
block to false
. Note that this is not a general solution but can only be used with the access_log
block.
access_logs { bucket = "my-bucket" prefix = "${var.environment_name}-alb" enabled = "${var.environment_name == "production" ? true : false }" }
See also:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With