The terraform console
command opens an interactive console for evaluating expressions.
Usage: terraform console [options]
This command provides an interactive command-line console for evaluating and experimenting with expressions. You can use it to test interpolations before using them in configurations and to interact with any values currently saved in state. If the current state is empty or has not yet been created, you can use the console to experiment with the expression syntax and built-in functions. The console holds a lock on the state, and you will not be able to use the console while performing other actions that modify state.
To close the console, enter the exit
command or press Control-C or Control-D.
For configurations using the local
backend only, terraform console
accepts the legacy command line option -state
.
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:
$ echo 'split(",", "foo,bar,baz")' | terraform console
tolist([
"foo",
"bar",
"baz",
])
If remote state is used by the current backend, Terraform will read the state for the current workspace from the backend before evaluating any expressions.
By default, terraform console
evaluates expressions against the current Terraform state, and so the results are typically very limited for resource instances that haven't yet been created by applying a plan.
You can use the -plan
option to instead generate an execution plan first, as if running terraform plan
, and then evaluate against the planned state to describe the values Terraform expects will be correct after the plan is applied. This typically causes a longer delay before the console prompt appears, but in return there will be a more complete set of values available in the expression scope.
For well-behaved configurations the planning phase should not make any modifications to real remote objects, but it is possible to write a configuration that can take significant actions while planning. For example, a configuration which uses the hashicorp/external
provider's external
data source is likely to run the configured external command during the plan phase, which means it would be run by terraform console -plan
too.
We don't recommend that you write configurations that make changes during the plan phase. If you do write such a configuration despite that recommendation, take care when using the console in plan mode against that configuration.
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
:
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"
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4