github.com/kcburge/terraform@v0.11.12-beta1/website/docs/configuration/locals.html.md (about) 1 --- 2 layout: "docs" 3 page_title: "Configuring Local Values" 4 sidebar_current: "docs-config-locals" 5 description: |- 6 Local values assign a name to an expression that can then be used multiple times 7 within a module. 8 --- 9 10 # Local Value Configuration 11 12 Local values assign a name to an expression, that can then be used multiple 13 times within a module. 14 15 Comparing modules to functions in a traditional programming language, 16 if [variables](./variables.html) are analogous to function arguments and 17 [outputs](./outputs.html) are analogous to function return values then 18 _local values_ are comparable to a function's local variables. 19 20 This page assumes you're already familiar with 21 [the configuration syntax](/docs/configuration/syntax.html). 22 23 ## Examples 24 25 Local values are defined in `locals` blocks: 26 27 ```hcl 28 # Ids for multiple sets of EC2 instances, merged together 29 locals { 30 instance_ids = "${concat(aws_instance.blue.*.id, aws_instance.green.*.id)}" 31 } 32 33 # A computed default name prefix 34 locals { 35 default_name_prefix = "${var.project_name}-web" 36 name_prefix = "${var.name_prefix != "" ? var.name_prefix : local.default_name_prefix}" 37 } 38 39 # Local values can be interpolated elsewhere using the "local." prefix. 40 resource "aws_s3_bucket" "files" { 41 bucket = "${local.name_prefix}-files" 42 # ... 43 } 44 ``` 45 46 Named local maps can be merged with local maps to implement common or default 47 values: 48 49 ```hcl 50 # Define the common tags for all resources 51 locals { 52 common_tags = { 53 Component = "awesome-app" 54 Environment = "production" 55 } 56 } 57 58 # Create a resource that blends the common tags with instance-specific tags. 59 resource "aws_instance" "server" { 60 ami = "ami-123456" 61 instance_type = "t2.micro" 62 63 tags = "${merge( 64 local.common_tags, 65 map( 66 "Name", "awesome-app-server", 67 "Role", "server" 68 ) 69 )}" 70 } 71 ``` 72 73 ## Description 74 75 The `locals` block defines one or more local variables within a module. 76 Each `locals` block can have as many locals as needed, and there can be any 77 number of `locals` blocks within a module. 78 79 The names given for the items in the `locals` block must be unique throughout 80 a module. The given value can be any expression that is valid within 81 the current module. 82 83 The expression of a local value can refer to other locals, but as usual 84 reference cycles are not allowed. That is, a local cannot refer to itself 85 or to a variable that refers (directly or indirectly) back to it. 86 87 It's recommended to group together logically-related local values into 88 a single block, particularly if they depend on each other. This will help 89 the reader understand the relationships between variables. Conversely, 90 prefer to define _unrelated_ local values in _separate_ blocks, and consider 91 annotating each block with a comment describing any context common to all 92 of the enclosed locals.