Bash-获取存储在 terraform 文件中的值

Sus*_*ush -2 linux bash shell terraform

我需要在 bash 脚本中获取存储在 terraform 文件中的值。

cat custom.tfvars
Val1 = {a1 = "12", b2 = "0.5", "count" = 2}
Val2 = {a1 = "14", b2 = "0.5", "count" = 1}
Run Code Online (Sandbox Code Playgroud)

我想编写一个脚本来获取 的值Val1(count)

谢谢。

yda*_*coR 5

虽然您可以使用普通的 Unix 文本处理工具来访问此值(例如使用现有的答案),但您可能还会发现使用可以正确解析 HCL 的工具很有用。值得庆幸的是,Terraform 附带了命令行命令terraform console,它使您能够在初始化的工作空间中与 Terraform 配置和状态数据进行交互。

给定一个名为的文件custom.tfvars,其内容如下:

Val1 = { a1 = "12", b2 = "0.5", "count" = 2 }
Val2 = { a1 = "14", b2 = "0.5", "count" = 1 }

val1_fmt = {
  a1    = "12"
  b2    = "0.5"
  count = 2
}
Run Code Online (Sandbox Code Playgroud)

您还需要声明变量,这样您可能会得到如下内容:

variable "Val1" {}
variable "Val2" {}

variable "val1_fmt" {}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用以下命令初始化目录terraform init,然后运行terraform console以交互方式(默认)或通过将控制台命令通过管道与配置进行交互,terraform console如下所示:

Val1 = { a1 = "12", b2 = "0.5", "count" = 2 }
Val2 = { a1 = "14", b2 = "0.5", "count" = 1 }

val1_fmt = {
  a1    = "12"
  b2    = "0.5"
  count = 2
}
Run Code Online (Sandbox Code Playgroud)

请注意,如果您在其中定义了变量,terraform.tfvars或者以它结尾的文件.auto.tfvars自动使用,而无需传递-var-file标志

使用terraform console此处还可以让您读取格式不同的等效结构:

variable "Val1" {}
variable "Val2" {}

variable "val1_fmt" {}
Run Code Online (Sandbox Code Playgroud)