124 lines
2.7 KiB
Plaintext
124 lines
2.7 KiB
Plaintext
---
|
|
page_title: 'Command: console'
|
|
description: >-
|
|
The terraform console command provides an interactive console for evaluating
|
|
expressions.
|
|
---
|
|
|
|
# Command: console
|
|
|
|
The `terraform console` command provides an interactive console for
|
|
evaluating [expressions](/language/expressions).
|
|
|
|
## Usage
|
|
|
|
Usage: `terraform console [options]`
|
|
|
|
This command provides an interactive command-line console for evaluating and
|
|
experimenting with [expressions](/language/expressions).
|
|
This is useful for testing interpolations before using them in configurations,
|
|
and for interacting with any values currently saved in
|
|
[state](/language/state).
|
|
|
|
If the current state is empty or has not yet been created, the console can be
|
|
used to experiment with the expression syntax and
|
|
[built-in functions](/language/functions).
|
|
|
|
You can close the console with the `exit` command or by pressing Control-C
|
|
or Control-D.
|
|
|
|
For configurations using
|
|
[the `local` backend](/language/settings/backends/local) only,
|
|
`terraform console` accepts the legacy command line option
|
|
[`-state`](/language/settings/backends/local#command-line-arguments).
|
|
|
|
## Scripting
|
|
|
|
The `terraform console` command can be used in non-interactive scripts
|
|
by piping newline-separated commands to it. Only the output from the
|
|
final command is printed unless an error occurs earlier.
|
|
|
|
For example:
|
|
|
|
```shell
|
|
$ echo 'split(",", "foo,bar,baz")' | terraform console
|
|
tolist([
|
|
"foo",
|
|
"bar",
|
|
"baz",
|
|
])
|
|
```
|
|
|
|
## Remote State
|
|
|
|
If [remote state](/language/state/remote) is used by the current backend,
|
|
Terraform will read the state for the current workspace from the backend
|
|
before evaluating any expressions.
|
|
|
|
## Examples
|
|
|
|
The `terraform console` command will read the Terraform configuration in the
|
|
current working directory and the Terraform state file from the configured
|
|
backend so that interpolations can be tested against both the values in the
|
|
configuration and the state file.
|
|
|
|
With the following `main.tf`:
|
|
|
|
```hcl
|
|
variable "apps" {
|
|
type = map(any)
|
|
default = {
|
|
"foo" = {
|
|
"region" = "us-east-1",
|
|
},
|
|
"bar" = {
|
|
"region" = "eu-west-1",
|
|
},
|
|
"baz" = {
|
|
"region" = "ap-south-1",
|
|
},
|
|
}
|
|
}
|
|
|
|
resource "random_pet" "example" {
|
|
for_each = var.apps
|
|
}
|
|
```
|
|
|
|
Executing `terraform console` will drop you into an interactive shell where you
|
|
can test interpolations to:
|
|
|
|
Print a value from a map:
|
|
|
|
```
|
|
> var.apps.foo
|
|
{
|
|
"region" = "us-east-1"
|
|
}
|
|
```
|
|
|
|
Filter a map based on a specific value:
|
|
|
|
```
|
|
> { for key, value in var.apps : key => value if value.region == "us-east-1" }
|
|
{
|
|
"foo" = {
|
|
"region" = "us-east-1"
|
|
}
|
|
}
|
|
```
|
|
|
|
Check if certain values may not be known until apply:
|
|
|
|
```
|
|
> random_pet.example
|
|
(known after apply)
|
|
```
|
|
|
|
Test various functions:
|
|
|
|
```
|
|
> cidrnetmask("172.16.0.0/12")
|
|
"255.240.0.0"
|
|
```
|