mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
Signed-off-by: Christian Mesh <christianmesh1@gmail.com> Signed-off-by: ollevche <ollevche@gmail.com> Co-authored-by: ollevche <ollevche@gmail.com>
145 lines
4.3 KiB
Plaintext
145 lines
4.3 KiB
Plaintext
---
|
|
description: >-
|
|
The tofu console command provides an interactive console for evaluating
|
|
expressions.
|
|
---
|
|
|
|
# Command: console
|
|
|
|
The `tofu console` command provides an interactive console for
|
|
evaluating [expressions](../../language/expressions/index.mdx).
|
|
|
|
## Usage
|
|
|
|
Usage: `tofu console [options]`
|
|
|
|
This command provides an interactive command-line console for evaluating and
|
|
experimenting with [expressions](../../language/expressions/index.mdx).
|
|
You can use it to test interpolations before using them in configurations
|
|
and to interact with any values currently saved in
|
|
[state](../../language/state/index.mdx). 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](../../language/functions/index.mdx). The console holds a [lock on the state](../../language/state/locking.mdx), 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](../../language/settings/backends/local.mdx) only,
|
|
`tofu console` accepts the legacy command line option
|
|
[`-state`](../../language/settings/backends/local.mdx#command-line-arguments).
|
|
|
|
:::note
|
|
Use of variables in [module sources](../../language/modules/sources.mdx#support-for-variable-and-local-evaluation),
|
|
[backend configuration](../../language/settings/backends/configuration.mdx#variables-and-locals),
|
|
or [encryption block](../../language/state/encryption.mdx#configuration)
|
|
requires [assigning values to root module variables](../../language/values/variables.mdx#assigning-values-to-root-module-variables)
|
|
when running `tofu console`.
|
|
:::
|
|
|
|
This command also accepts the following options for tofu console:
|
|
|
|
- `-var 'NAME=VALUE'` - Sets a value for a single
|
|
[input variable](/docs/language/values/variables) declared in the
|
|
root module of the configuration. Use this option multiple times to set
|
|
more than one variable. Refer to
|
|
[Input Variables on the Command Line](#input-variables-on-the-command-line) for more information.
|
|
|
|
- `-var-file=FILENAME` - Sets values for potentially many
|
|
[input variables](/docs/language/values/variables) declared in the
|
|
root module of the configuration, using definitions from a
|
|
["tfvars" file](/docs/language/values/variables#variable-definitions-tfvars-files).
|
|
Use this option multiple times to include values from more than one file.
|
|
|
|
There are several other ways to set values for input variables in the root
|
|
module, aside from the `-var` and `-var-file` options. Refer to
|
|
[Assigning Values to Root Module Variables](../../language/values/variables.mdx#assigning-values-to-root-module-variables) for more information.
|
|
|
|
## Scripting
|
|
|
|
The `tofu 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")' | tofu console
|
|
tolist([
|
|
"foo",
|
|
"bar",
|
|
"baz",
|
|
])
|
|
```
|
|
|
|
## Remote State
|
|
|
|
If [remote state](../../language/state/remote.mdx) is used by the current backend,
|
|
OpenTofu will read the state for the current workspace from the backend
|
|
before evaluating any expressions.
|
|
|
|
## Examples
|
|
|
|
The `tofu console` command will read the OpenTofu configuration in the
|
|
current working directory and the OpenTofu 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 `tofu 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"
|
|
``` |