{"id":8118,"date":"2019-12-21T10:27:25","date_gmt":"2019-12-21T10:27:25","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=8118"},"modified":"2023-02-14T03:10:14","modified_gmt":"2023-02-14T03:10:14","slug":"terraform-output-variable-example","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/terraform-output-variable-example\/","title":{"rendered":"Terraform Output Variable Tutorials with Example"},"content":{"rendered":"\n<p>Terraform will store hundreds or even thousands of attribute values for all the defined resources in our infrastructure in state file.<\/p>\n\n\n\n<p>An outputed attributes can not only be used for the user reference but it can also act as an input to other resources being created via Terraform.<\/p>\n\n\n\n<p>Output variables provide a convenient way to get useful information about your infrastructure. Terraform output values allow you to export structured data about your resources. You can use this data to configure other parts of your infrastructure with automation tools, or as a data source for another Terraform workspace. Outputs are also necessary to share data from a child module to your root module.<\/p>\n\n\n\n<p>Resource instances managed by Terraform each export attributes whose values can be used elsewhere in configuration. Output values are a way to expose some of that information to the user of your module.<\/p>\n\n\n\n<p>We can use output variables to organize data to be easily queried and shown back to the Terraform user.<\/p>\n\n\n\n<p>While Terraform stores hundreds or thousands of attribute values for all our resources, we are more likely to be interested in a few values of importance, such as a load balancer IP, VPN address, etc.<\/p>\n\n\n\n<p><strong>Output values are like the return values of a Terraform module, and have several uses:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A child module can use outputs to expose a subset of its resource attributes to a parent module.<\/li>\n\n\n\n<li>A root module can use outputs to print certain values in the CLI output after running terraform apply.<\/li>\n\n\n\n<li>When using remote state, root module outputs can be accessed by other configurations via a terraform_remote_state data source.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Terraform example code for output value of string type<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"979\" height=\"400\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/02\/image-21.png\" alt=\"\" class=\"wp-image-32798\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/02\/image-21.png 979w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/02\/image-21-300x123.png 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/02\/image-21-768x314.png 768w\" sizes=\"auto, (max-width: 979px) 100vw, 979px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">String Type &#8211; Terraform example code for output value of aws_instance public_dns<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">output <span class=\"hljs-string\">\"instance_public_dns\"<\/span> {\n  value = aws_instance.example.public_dns\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Map Type &#8211; Terraform example code for output value of aws_instance root_block_device<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">output <span class=\"hljs-string\">\"instance_root_block_device\"<\/span> {\n  value = aws_instance.example.root_block_device&#91;<span class=\"hljs-number\">0<\/span>].volume_id\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">List Type &#8211; Terraform example code for output value of aws_instance security group<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">output <span class=\"hljs-string\">\"instance_security_group\"<\/span> {\n  value = aws_instance.example.security_groups&#91;<span class=\"hljs-number\">0<\/span>]\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<script src=\"https:\/\/gist.github.com\/devops-school\/fe774772c6e0a0b69f87f16150917e41.js\"><\/script>\n\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_40704\"><iframe loading=\"lazy\"  id=\"_ytid_15006\"  width=\"760\" height=\"427\"  data-origwidth=\"760\" data-origheight=\"427\" src=\"https:\/\/www.youtube.com\/embed\/?enablejsapi=1&#038;autoplay=0&#038;cc_load_policy=0&#038;cc_lang_pref=&#038;iv_load_policy=1&#038;loop=0&#038;rel=1&#038;fs=1&#038;playsinline=0&#038;autohide=2&#038;theme=dark&#038;color=red&#038;controls=1&#038;disablekb=0&#038;\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  data-epytgalleryid=\"epyt_gallery_40704\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"<p>Terraform will store hundreds or even thousands of attribute values for all the defined resources in our infrastructure in state file. An outputed attributes can not only be used for&#8230; <\/p>\n","protected":false},"author":1,"featured_media":21728,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[5129],"tags":[],"class_list":["post-8118","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-terraform"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/8118","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=8118"}],"version-history":[{"count":7,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/8118\/revisions"}],"predecessor-version":[{"id":32800,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/8118\/revisions\/32800"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/21728"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=8118"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=8118"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=8118"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}