问题描述
在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