Anshu Prateek
Anshu Prateek

Reputation: 3055

How to store and reuse terraform interpolation result within resources?

How do I store and reuse terraform interpolation result within resources that do not expose them as output?

example: In aws_ebs_volume , I am calculating my volume size using:

size = "${lookup(merge(var.default_ebs_vol_sizes,var.ebs_vol_sizes),
    var.tag_disk_location[var.extra_ebs_volumes[count.index % length(var.extra_ebs_volumes)]])}"

Now I need to reuse the same size for calculating the cost tags in the same resource as well as in corresponding ec2 resource (in same module). How do I do this without copy pasting the entire formula?

PS: I have come across this usecase in multiple scenarios, so the above is just one of the use cases where I need to reuse the interpolated results. Getting the interpolated result using the corresponding data source is one way out in this case but looking for a more straight forward solution.

Upvotes: 2

Views: 679

Answers (1)

Anshu Prateek
Anshu Prateek

Reputation: 3055

This is now possible using the local variable available from terraform 0.10.3 onwards.

https://www.terraform.io/docs/configuration/locals.html

Local values assign a name to an expression, that can then be used multiple times within a module.

Upvotes: 2

Related Questions