Terraform output values

2 min read | by Jordi Prats

To be able to save data generated using terraform to be able to import the terraform state somewhere else using terraform_remote_state or retrieving it using the CLI we need to use the output directive:

output "alb_dns_name" { description = "ALB DNS name" value = aws_alb.jenkins-alb.dns_name } 

We can use terraform output for getting all the outputs:

$ terraform output web web = "jenkins.pet2cattle.com" helm_jenkins_values = tolist([  <<-EOT  image:  repository: jenkins  tag: 2.60.3  pullPolicy: IfNotPresent  pullSecrets: []  lts: true  (...)  EOT, ]) 

We can also retrieve just one of then, for example:

$ terraform output web "jenkins.pet2cattle.com" 

We can also use the -raw option for getting just the data:

$ terraform output -raw web jenkins.pet2cattle.com 

We can also output complex types, for example the compounded values from values and set attributes of a helm_release* resource:

output helm_jenkins_values { value = helm_release.jenkins.values } 

If we try to retrieve it we will get the following output:

$ terraform output helm_jenkins_values tolist([  <<-EOT  image:  repository: jenkins  tag: 2.60.3  pullPolicy: IfNotPresent  pullSecrets: []  lts: true  (...)  EOT, ]) 

But we won't be able to retrieve it as a raw value since it is a complex type:

$ terraform output -raw helm_jenkins_values  Error: Unsupported value for raw output The -raw option only supports strings, numbers, and boolean values, but output value "helm_jenkins_values" is list of string. Use the -json option for machine-readable representations of output values that have complex types. 

To be able to retrieve it as a yaml, we will need to tell terraform to output it as a json and then use jq for rendering the data contained in the first item of the array:

$ terraform output -json helm_jenkins_values | jq -r .[0] image:  repository: jenkins  tag: 2.60.3  pullPolicy: IfNotPresent  pullSecrets: []  lts: true nameOverride: "" fullnameOverride: "" (...) 

Posted on 16/04/2021

Categories