Terraform: Output a field from a module

Adam Matan picture Adam Matan · Oct 31, 2017 · Viewed 13.7k times · Source

Code

Consider a terraform module:

module "blah-asg" {
  source = "asg"

  asg_max_size       = 1
  asg_min_size       = "${var.min_blah}"
  ...
}

My problem

How do I output variables from it?

What have I tried

output "blah-es-asg" {
    value = "${asg.blah-asg.arn}"
}

Which failed with

Error getting plugins: module root: 1 error(s) occurred: * output 'blah-asg': unknown resource 'asg.blah' referenced in variable asg.blah-asg.arn

My question

How can I output module fields in Terraform?

Answer

BMW picture BMW · Nov 1, 2017

So first, you need to set the output in the module asg:

$ cat asg/output.tf

output "blah-es-asg" {
    value = "${aws_autoscaling_group.blah-asg.arn}"
}

Then you call the module with source = "asg":

module "blah-asg" {
  source = "asg"

  asg_max_size       = 1
  asg_min_size       = "${var.min_blah}"
  ...
}

You can output it in current code with this format now:

output "blah-es-asg" {
    value = "${module.blah-asg.blah-es-asg}"
}