命令: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"