在Terraform中如何输入多行变量

166次阅读
没有评论

问题描述

在Terraform中遇到了如何输入多行变量的问题。他在variables.tf文件中想要测试实验环境的公钥变量,尝试过使用<<EOF语法,但是Terraform似乎不支持这种方式。

解决方案

请注意以下操作可能会因Terraform版本差异而有所变化,确保备份重要文件。

方案1:使用原始字符串作为变量

在Terraform中,变量类型被分为“原始”类型和“复杂”类型。原始类型包括字符串(string):

原始类型是一种不由其他类型构成的简单类型。Terraform中的所有原始类型都由类型关键字表示。可用的原始类型包括:
– string:表示一串Unicode字符序列,如 “hello”。
– number:数值类型。数值类型可以表示整数,如 15,以及小数,如 6.283185。
– bool:布尔类型,可以是 true 或 false。布尔值可用于条件逻辑。

因此,只需将变量声明为字符串类型,并在其中包含换行即可。

示例:

variable "public_key" {
  type    = string
  default = <<-EOT
    -----BEGIN PUBLIC KEY-----
    Your Public Key Here
    -----END PUBLIC KEY-----
    EOT
}

在上述示例中,我们创建了一个名为 public_key 的字符串变量,并使用 default 参数指定了变量的默认值。在这里,我们使用 <<-EOT 语法来定义一个包含换行的多行字符串。

方案2:使用其他标记方式

有时候,Terraform也支持使用其他标记来定义多行字符串,如 <<-EOF<<EOT。这些标记通常用于在输入字符串中包含换行,以便更清晰地表示多行内容。

示例:

variable "public_key" {
  type    = string
  default = <<EOT
    -----BEGIN PUBLIC KEY-----
    Your Public Key Here
    -----END PUBLIC KEY-----
    EOT
}

在这个示例中,我们使用了 <<EOT 标记来定义多行字符串。

请根据你的喜好选择适合你的标记方式,并确保在字符串的开始和结束标记之间输入所需的多行内容。

总结

在Terraform中,你可以使用原始字符串类型来定义包含多行内容的变量。通过适当的标记,你可以在字符串中包含换行,以便更好地表示多行文本内容。选择合适的标记方式,并根据需要输入多行内容,以便在你的Terraform配置中使用。

参考文档:
Terraform variable type constraints

正文完