{"id":7589,"date":"2025-03-18T05:02:08","date_gmt":"2025-03-18T05:02:08","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=7589"},"modified":"2025-03-18T05:02:08","modified_gmt":"2025-03-18T05:02:08","slug":"local-values-is-defined-in-terraform","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/local-values-is-defined-in-terraform\/","title":{"rendered":"Terraform Tutorials: Local Values using Local Block"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">What is local value in terraform?<\/h2>\n\n\n\n<p><strong>In Terraform, a locals block is used to define local variables within a module, allowing you to create reusable expressions and reduce duplication in your code.<\/strong><\/p>\n\n\n\n<p>In <strong>Terraform<\/strong>, the <code>locals<\/code> block is used to define <strong>local variables<\/strong> that store values which can be referenced <strong>throughout the configuration<\/strong>. These variables <strong>cannot be overridden<\/strong> like input variables (<code>variable<\/code> block) and help in making code <strong>cleaner, reusable, and maintainable<\/strong>.<\/p>\n\n\n\n<p><strong>Remember<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scope is W<strong>ithin a module<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Local values can be used to simplify complex expressions or<strong> to make your code more readable<\/strong> by giving a name to a value that is used multiple times within a module. Additionally, local values can be used to <strong>reduce the amount of redundant code in your module<\/strong> by allowing you to define common values in one place and use them throughout your code.<\/p>\n\n\n\n<p><strong>These are variables that are local to a module.<\/strong> They are defined, assigned, and used in the same module, and defined in the \u201clocals\u201d block. Below is an example snippet on a local block:<\/p>\n\n\n\n<p><strong>Local variables can be declared once and used any number of times in the module<\/strong>. These can be accessed as objects by using the format of &#8220;local.Variable_Name&#8221;.<\/p>\n\n\n\n<p><strong>Unlike variables found in programming languages, Terraform&#8217;s locals don&#8217;t change values during or between Terraform runs such as plan, apply, or destroy. You can use locals to give a name to the result of any Terraform expression, and re-use that name throughout your configuration. Unlike input variables, locals are not set directly by users of your configuration.<\/strong><\/p>\n\n\n\n<p>Set of related local values can be declared together in a single locals block. The expressions assigned to local value names can either be simple constants or can be more complex expressions that transform or combine values from elsewhere in the module.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example<\/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\">locals {\n  service_name = <span class=\"hljs-string\">\"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\"<\/span>\n  owner        = <span class=\"hljs-string\">\"Community Team\"<\/span>\n}\n\nlocals {\n  project_name   = <span class=\"hljs-string\">\"my-terraform-project\"<\/span>\n  instance_type  = <span class=\"hljs-string\">\"t2.micro\"<\/span>\n  tags = {\n    environment = <span class=\"hljs-string\">\"dev\"<\/span>\n    owner       = <span class=\"hljs-string\">\"team-a\"<\/span>\n  }\n}\n\n\n\nresource <span class=\"hljs-string\">\"github_repository\"<\/span> <span class=\"hljs-string\">\"example\"<\/span> {\n  name        = local.service_name\n  description = <span class=\"hljs-string\">\"My awesome codebase\"<\/span>\n\n  visibility = <span class=\"hljs-string\">\"public\"<\/span>\n}\n\n\ud83d\udd39 Each variable inside locals {} is an immutable expression.\n\ud83d\udd39 Can be strings, numbers, lists, maps, or complex objects.<\/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\">Comparing modules to functions in a traditional programming language:<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Input variables are analogous to function arguments and<\/li>\n\n\n\n<li>Outputs values are analogous to function return values, then<\/li>\n\n\n\n<li>local values are comparable to a function\u2019s local temporary symbols.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">When To Use Local Values?<\/h2>\n\n\n\n<p>\u2705 <strong>Avoid Repetitive Code:<\/strong> Define values once and reuse them.<br>\u2705 <strong>Complex Expressions:<\/strong> Store calculated values or concatenations.<br>\u2705 <strong>Maintainability:<\/strong> Improves readability of Terraform code.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Local values can be helpful to avoid repeating the same values or expressions multiple times in a configuration, but if overused they can also make a configuration hard to read by future maintainers by hiding the actual values used.<\/li>\n\n\n\n<li>Use local values only in moderation, in situations where a single value or result is used in many places and that value is likely to be changed in future. The ability to easily change the value in a central place is the key advantage of local values.<\/li>\n\n\n\n<li>Each locals block can have as many locals as needed, and there can be any number of locals blocks within a module. The names given for the items in the local block must be unique throughout a module. The given value can be any expression that is valid within the current module.<\/li>\n\n\n\n<li>The expression of a local value can refer to other locals, but as usual reference cycles are not allowed. That is, a local cannot refer to itself or to a variable that refers (directly or indirectly) back to it.<\/li>\n<\/ul>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\"># Using Local strings Values in Resources<\/span>\n\nlocals {\n  common_tags = {\n    project = <span class=\"hljs-string\">\"web-app\"<\/span>\n    owner   = <span class=\"hljs-string\">\"DevOpsTeam\"<\/span>\n  }\n}\n\nresource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"web\"<\/span> {\n  ami           = <span class=\"hljs-string\">\"ami-123456\"<\/span>\n  instance_type = <span class=\"hljs-string\">\"t3.micro\"<\/span>\n  tags          = local.common_tags\n}\n\n<span class=\"hljs-comment\"># Using Local strings Values in Resources<\/span>\n\nlocals {\n  bucket_name = <span class=\"hljs-string\">\"my-app-bucket-${terraform.workspace}\"<\/span>\n}\n\nresource <span class=\"hljs-string\">\"aws_s3_bucket\"<\/span> <span class=\"hljs-string\">\"example\"<\/span> {\n  bucket = local.bucket_name\n}\n\n<span class=\"hljs-comment\"># Using Local strings Values in Resources<\/span>\n\nlocals {\n  instance_count = <span class=\"hljs-keyword\">var<\/span>.environment == <span class=\"hljs-string\">\"prod\"<\/span> ? <span class=\"hljs-number\">3<\/span> : <span class=\"hljs-number\">1<\/span>\n}\n\nresource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"web\"<\/span> {\n  count         = local.instance_count\n  ami          = <span class=\"hljs-string\">\"ami-123456\"<\/span>\n  instance_type = <span class=\"hljs-string\">\"t2.micro\"<\/span>\n}\n\n<span class=\"hljs-comment\"># Using locals with Maps &amp; Lists<\/span>\n\nlocals {\n  db_configs = {\n    <span class=\"hljs-string\">\"dev\"<\/span>  = { instance_type = <span class=\"hljs-string\">\"db.t3.micro\"<\/span>, storage = <span class=\"hljs-number\">20<\/span> }\n    <span class=\"hljs-string\">\"prod\"<\/span> = { instance_type = <span class=\"hljs-string\">\"db.t3.large\"<\/span>, storage = <span class=\"hljs-number\">100<\/span> }\n  }\n}\n\nresource <span class=\"hljs-string\">\"aws_db_instance\"<\/span> <span class=\"hljs-string\">\"database\"<\/span> {\n  instance_class = local.db_configs&#91;<span class=\"hljs-keyword\">var<\/span>.environment].instance_type\n  allocated_storage = local.db_configs&#91;<span class=\"hljs-keyword\">var<\/span>.environment].storage\n}\n\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Comparison between local variable and input variable<\/h2>\n\n\n\n<p>Here&#8217;s a comparison between local variables and input variables in Terraform, highlighting their key differences and use cases:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Feature<\/th><th>Local Variables<\/th><th>Input Variables<\/th><\/tr><\/thead><tbody><tr><td>Definition<\/td><td>Defined using the <code>locals<\/code> block.<\/td><td>Defined using the <code>variable<\/code> block.<\/td><\/tr><tr><td>Scope<\/td><td>Local to the module where they are defined.<\/td><td>Can be passed from outside the module, typically from the root module.<\/td><\/tr><tr><td>Purpose<\/td><td>Simplify and reuse complex expressions and values within a module.<\/td><td>Allow dynamic configuration by providing input from users or higher-level modules.<\/td><\/tr><tr><td>Syntax<\/td><td><code>hcl locals {&lt;br&gt; var_name = \"value\"&lt;br&gt;}<\/code><\/td><td><code>hcl variable \"var_name\" {&lt;br&gt; default = \"value\"&lt;br&gt;}<\/code><\/td><\/tr><tr><td>Value Assignment<\/td><td>Directly assigned within the <code>locals<\/code> block.<\/td><td>Assigned via command-line arguments, environment variables, or <code>terraform.tfvars<\/code> files.<\/td><\/tr><tr><td>Usage<\/td><td><code>hcl local.var_name<\/code><\/td><td><code>hcl var.var_name<\/code><\/td><\/tr><tr><td>Flexibility<\/td><td>Fixed within the module; cannot be overridden from outside.<\/td><td>Flexible and can be overridden from the command line, environment variables, or files.<\/td><\/tr><tr><td>Example Use Case<\/td><td>Consolidating repeated expressions or values within a module to reduce redundancy and enhance readability.<\/td><td>Allowing users to specify parameters like region, instance type, or environment to customize the deployment.<\/td><\/tr><tr><td>Reusability<\/td><td>Limited to the scope of the module; not reusable across modules.<\/td><td>Highly reusable across different modules by passing different values for the variables.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"913\" height=\"170\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/06\/Terraform-local-variables-1.jpg\" alt=\"\" class=\"wp-image-21732\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/06\/Terraform-local-variables-1.jpg 913w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/06\/Terraform-local-variables-1-300x56.jpg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/06\/Terraform-local-variables-1-768x143.jpg 768w\" sizes=\"auto, (max-width: 913px) 100vw, 913px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udccc <code>locals<\/code> vs. <code>variables<\/code> vs. <code>outputs<\/code><\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th><strong>locals<\/strong><\/th><th><strong>variables<\/strong><\/th><th><strong>outputs<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>Purpose<\/strong><\/td><td>Store reusable values <strong>inside Terraform code<\/strong><\/td><td>Accept <strong>user-defined values<\/strong><\/td><td>Display values <strong>after Terraform execution<\/strong><\/td><\/tr><tr><td><strong>Mutable?<\/strong><\/td><td>No (Fixed during execution)<\/td><td>Yes (Can be overridden)<\/td><td>No<\/td><\/tr><tr><td><strong>Scope<\/strong><\/td><td>Local to the module<\/td><td>Passed from CLI or other modules<\/td><td>Only available after execution<\/td><\/tr><tr><td><strong>Example<\/strong><\/td><td><code>local.project_name<\/code><\/td><td><code>var.region<\/code><\/td><td><code>output \"vpc_id\" { value = aws_vpc.main.id }<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"513\" src=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/06\/Terraform-local-variables-2.jpg\" alt=\"\" class=\"wp-image-21734\" srcset=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/06\/Terraform-local-variables-2.jpg 800w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/06\/Terraform-local-variables-2-300x192.jpg 300w, https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2021\/06\/Terraform-local-variables-2-768x492.jpg 768w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\ud83d\udccc When NOT to Use <code>locals<\/code><\/strong><\/h2>\n\n\n\n<p>\u274c When you need <strong>input from users<\/strong> \u2192 Use <code>variable<\/code> block instead.<br>\u274c When you want <strong>cross-module communication<\/strong> \u2192 Use <code>outputs<\/code>.<br>\u274c If the value is <strong>very simple<\/strong> and used only once \u2192 Define it inline instead.<\/p>\n\n\n\n<p><strong>Example 1 Program<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">\n<span class=\"hljs-comment\"># This is a DRAFT and not yet implemented; final syntax\/behavior may differ<\/span>\n\nlocals {\n  config = {\n    region = <span class=\"hljs-string\">\"${var.region}\"<\/span>\n    <span class=\"hljs-comment\"># ...and any other settings you want to make available to modules...<\/span>\n  }\n}\n\nmodule <span class=\"hljs-string\">\"example\"<\/span> {\n  source = <span class=\"hljs-string\">\".\/example\"<\/span>\n\n  <span class=\"hljs-comment\"># pass the whole config object in a single variable<\/span>\n  config = <span class=\"hljs-string\">\"${local.config}\"<\/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\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Example 2 &#8211; <\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">\nExample <span class=\"hljs-number\">2<\/span> - \n\nlocals {\n  service_name = <span class=\"hljs-string\">\"forum\"<\/span>\n  owner        = <span class=\"hljs-string\">\"Community Team\"<\/span>\n}\n\nlocals {\n  <span class=\"hljs-comment\"># Ids for multiple sets of EC2 instances, merged together<\/span>\n  instance_ids = concat(aws_instance.blue.*.id, aws_instance.green.*.id)\n}\n\nlocals {\n  <span class=\"hljs-comment\"># Common tags to be assigned to all resources<\/span>\n  common_tags = {\n    Service = local.service_name\n    Owner   = local.owner\n  }\n}\n\nresource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"example\"<\/span> {\n  <span class=\"hljs-comment\"># ...<\/span>\n\n  tags = local.common_tags\n}\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><strong>Example 3 &#8211;  Terraform workspaces and locals for environment separation<\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">\nprovider <span class=\"hljs-string\">\"aws\"<\/span> {\n  region= <span class=\"hljs-string\">\"us-east-1\"<\/span>\n}\nresouce <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"my_service\"<\/span> {\n  ami=<span class=\"hljs-string\">\"ami-7b4d7900\"<\/span>\n  instance_type=<span class=\"hljs-string\">\"t2.micro\"<\/span>\n}\n\n$ terraform workspace <span class=\"hljs-keyword\">new<\/span> production\n\nprovider <span class=\"hljs-string\">\"aws\"<\/span> {\n  region= <span class=\"hljs-string\">\"us-east-1\"<\/span>\n}\nlocals {\n  env=<span class=\"hljs-string\">\"${terraform.workspace}\"<\/span>\n  counts = {\n    <span class=\"hljs-string\">\"default\"<\/span>=<span class=\"hljs-number\">1<\/span>\n    <span class=\"hljs-string\">\"production\"<\/span>=<span class=\"hljs-number\">3<\/span>\n  }\n  instances = {\n    <span class=\"hljs-string\">\"default\"<\/span>=<span class=\"hljs-string\">\"t2.micro\"<\/span>\n    <span class=\"hljs-string\">\"production\"<\/span>=<span class=\"hljs-string\">\"t4.large\"<\/span>\n  }\n  instance_type=<span class=\"hljs-string\">\"${lookup(local.instances,env)}\"<\/span>\n  count=<span class=\"hljs-string\">\"${lookup(local.counts,local.env)}\"<\/span>\n}\nresource <span class=\"hljs-string\">\"aws_instance\"<\/span> <span class=\"hljs-string\">\"my_service\"<\/span> {\n  ami=<span class=\"hljs-string\">\"ami-7b4d7900\"<\/span>\n  instance_type=<span class=\"hljs-string\">\"${local.instance_type}\"<\/span>\n  count=<span class=\"hljs-string\">\"${local.count}\"<\/span>\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><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<p><strong>Example 4 &#8211; <\/strong><\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">##----------------------<\/span>\n<span class=\"hljs-comment\">##  Terraform: Local  ##<\/span>\n<span class=\"hljs-comment\">##----------------------<\/span>\n<span class=\"hljs-comment\">## Create a directory and get inside it<\/span>\nmkdir terraform &amp;&amp; cd terraform\n\n<span class=\"hljs-comment\">## Create resources<\/span>\nvi main.tf\n------------------\n<span class=\"hljs-comment\">#declare variable<\/span>\nvariable <span class=\"hljs-string\">\"name\"<\/span> {\n<span class=\"hljs-keyword\">default<\/span> = <span class=\"hljs-string\">\"myapp\"<\/span>\n}\n<span class=\"hljs-comment\">#aws provider<\/span>\nprovider <span class=\"hljs-string\">\"aws\"<\/span> {\naccess_key = <span class=\"hljs-string\">\"&lt;your_access_key&gt;\"<\/span>\nsecret_key = <span class=\"hljs-string\">\"&lt;your_secret_key&gt;\"<\/span>\nregion = <span class=\"hljs-string\">\"ap-south-1\"<\/span>\n}\n<span class=\"hljs-comment\">#get region details<\/span>\ndata <span class=\"hljs-string\">\"aws_region\"<\/span> <span class=\"hljs-string\">\"myregion\"<\/span> {}\n<span class=\"hljs-comment\">#get availability zone details<\/span>\ndata <span class=\"hljs-string\">\"aws_availability_zones\"<\/span> <span class=\"hljs-string\">\"myavailabilityzones\"<\/span> {}\n<span class=\"hljs-comment\">#get account details<\/span>\ndata <span class=\"hljs-string\">\"aws_caller_identity\"<\/span> <span class=\"hljs-string\">\"myidentity\"<\/span> {}\n\n<span class=\"hljs-comment\">#declare local<\/span>\nlocals {\ntag_prefix = <span class=\"hljs-string\">\"${var.name}_${data.aws_caller_identity.myidentity.account_id}_${data.aws_region.myregion.name}\"<\/span>\n}\n\n<span class=\"hljs-comment\">#create vpc<\/span>\nresource <span class=\"hljs-string\">\"aws_vpc\"<\/span> <span class=\"hljs-string\">\"myvpc\"<\/span> {\ncidr_block = <span class=\"hljs-string\">\"10.0.0.0\/16\"<\/span>\nenable_dns_hostnames = <span class=\"hljs-keyword\">true<\/span>\ntags {\nName = <span class=\"hljs-string\">\"${local.tag_prefix}_vpc\"<\/span> <span class=\"hljs-comment\">#local block called<\/span>\n}\n}\n<span class=\"hljs-comment\">#create subnet<\/span>\nresource <span class=\"hljs-string\">\"aws_subnet\"<\/span> <span class=\"hljs-string\">\"myvpc_subnet\"<\/span> {\nvpc_id = <span class=\"hljs-string\">\"${aws_vpc.myvpc.id}\"<\/span>\ncidr_block = <span class=\"hljs-string\">\"10.0.0.0\/24\"<\/span>\navailability_zone = <span class=\"hljs-string\">\"${data.aws_availability_zones.myavailabilityzones.names&#91;0]}\"<\/span>\ntags {\n\u00a0\u00a0 Name = <span class=\"hljs-string\">\"${local.tag_prefix}_subnet\"<\/span> <span class=\"hljs-comment\">#local block called<\/span>\n\u00a0\u00a0}\n}\n------------------\n\n<span class=\"hljs-comment\">## Format code<\/span>\nterraform fmt\n\n<span class=\"hljs-comment\">## Initialize terraform<\/span>\nterraform init\n\n<span class=\"hljs-comment\">## Create the resource<\/span>\nterraform apply\n\n<span class=\"hljs-comment\">## Show state<\/span>\nterraform show\n\n<span class=\"hljs-comment\">## Cleanup<\/span>\n<span class=\"hljs-comment\">## Destory resources<\/span>\nterraform destory\n\n<span class=\"hljs-comment\">## Remove terraform directory<\/span>\ncd .. &amp;&amp; rm -rf terraform<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<div class=\"epyt-gallery\" data-currpage=\"1\" id=\"epyt_gallery_30428\"><figure class=\"wp-block-embed wp-block-embed-youtube is-type-video is-provider-youtube epyt-figure\"><div class=\"wp-block-embed__wrapper\"><iframe loading=\"lazy\"  id=\"_ytid_75116\"  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_30428\"  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><\/figure><div class=\"epyt-gallery-list\"><div>Sorry, there was a YouTube error.<\/div><\/div><\/div>\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>What is local value in terraform? In Terraform, a locals block is used to define local variables within a module, allowing you to create reusable expressions and reduce duplication in your code. In Terraform, the locals block is used to define local variables that store values which can be referenced throughout the configuration. These variables&#8230;<\/p>\n","protected":false},"author":1,"featured_media":7781,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","_joinchat":[],"footnotes":""},"categories":[5129],"tags":[5449,498,5130,5514],"class_list":["post-7589","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-terraform","tag-devopsschool","tag-local","tag-terraform","tag-value"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/7589","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=7589"}],"version-history":[{"count":16,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/7589\/revisions"}],"predecessor-version":[{"id":48784,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/7589\/revisions\/48784"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media\/7781"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=7589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=7589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=7589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}