跳至主要内容

命令:console

tofu console 命令提供了一个交互式控制台,用于评估 表达式

用法

用法:tofu console [选项]

此命令提供了一个交互式命令行控制台,用于评估和试验 表达式。您可以使用它在配置中使用插值之前测试插值,并与当前保存在 状态 中的任何值进行交互。如果当前状态为空或尚未创建,则可以使用控制台试验表达式语法和 内置函数。控制台会 锁定状态,在执行其他修改状态的操作时,您将无法使用控制台。

要关闭控制台,请输入 exit 命令或按 Control-C 或 Control-D。

仅对于使用 local 后端 的配置,tofu console 接受旧版命令行选项 -state

此命令还接受以下 tofu console 选项

  • -var 'NAME=VALUE' - 为配置根模块中声明的单个 输入变量 设置值。多次使用此选项可设置多个变量。有关更多信息,请参阅 命令行上的输入变量

  • -var-file=FILENAME - 使用来自 "tfvars" 文件 的定义,为配置根模块中声明的可能多个 输入变量 设置值。多次使用此选项可包含来自多个文件的值。

除了 -var-var-file 选项之外,还有几种其他方法可以为根模块中的输入变量设置值。有关更多信息,请参阅 为根模块变量赋值

脚本编写

tofu console 命令可用于非交互式脚本,方法是将换行符分隔的命令传递给它。除非较早发生错误,否则只会打印来自最后一个命令的输出。

例如

代码块
$ echo 'split(",", "foo,bar,baz")' | tofu console
tolist([
"foo",
"bar",
"baz",
])

远程状态

如果当前后端使用 远程状态,则 OpenTofu 会在评估任何表达式之前从后端读取当前工作区的状态。

示例

tofu console 命令将读取当前工作目录中的 OpenTofu 配置文件和配置的后端中的 OpenTofu 状态文件,以便可以针对配置和状态文件中的值测试插值。

使用以下 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
}

执行 tofu console 将使您进入一个交互式 shell,您可以在其中测试插值以

打印地图中的值

代码块
> var.apps.foo
{
"region" = "us-east-1"
}

根据特定值过滤地图

代码块
> { for key, value in var.apps : key => value if value.region == "us-east-1" }
{
"foo" = {
"region" = "us-east-1"
}
}

检查某些值是否可能在应用之前未知

代码块
> random_pet.example
(known after apply)

测试各种函数

代码块
> cidrnetmask("172.16.0.0/12")
"255.240.0.0"